Это не имеет ничего общего с DLL против EXE. Это поток, который падает. Если вы не поймаете исключение, то это вызовет обработчик исключений по умолчанию в Windows. Который прекратит процесс, опционально сообщая Microsoft о проблеме.
Перехват и обработка исключений, таких как AccessViolation, невозможны в VB6. В любом случае, это не стоит того, ваш основной поток выполнения перенес сердечный приступ и не может продолжать значимым образом. Даже если бы вы могли ее поймать, программа находится в очень плохом состоянии, ее глобальное состояние частично изменено. Попытка продолжить просто создаст больше сбоев. Или, что еще хуже, генерируйте неверные результаты и уничтожайте ценные данные.
Один из вариантов - запустить DLL в отдельном процессе. Сбой завершит этот процесс, а не ваш. Получить правильное значение очень сложно, трудно обнаружить сбой. И процесс взаимодействия сложен.