Невозможно ответить на этот вопрос без понимания вашего кода и ваших правил кодирования, особенно в части, касающейся исключений.
Но если ваши правила кодирования допускают исключения, тогда я предлагаю общее правило:
Разрешить распространению исключений, пока они не достигнут контекста, в котором они могут обрабатываться должным образом. Если они никогда не достигают контекста, в котором они могут обрабатываться должным образом, разрешите вашей программе аварийно завершить работу. Получите дамп ядра и устраните проблему.
«Обрабатывать» исключение в определенном контексте может быть так же просто, как преобразовать его в код ошибки или в собственный класс исключений, но в этом случае вам следует перебросить новое исключение и разрешить его распространению в обработчик.
Не реализуйте никакой формы универсального обработчика для исключений с целью предотвращения сбоя приложения или даже для регистрации ошибки и смерти. Вместо этого реализуйте систему, которая будет генерировать дампы в случае необработанного исключения, и дайте вашей программе умереть. Сам дамп достаточно логов. Вам не нужна универсальная возможность, потому что ваша система находится в таком поврежденном состоянии, что ее невозможно восстановить из.