Если вы хотите перехватывать исключения на уровне пользовательского интерфейса, вы не можете перехватывать их на уровне своего движка.
Для работающего приложения нет разницы, в какой сборке (каждый проект создает сборку) было сгенерировано исключение.
Если вам действительно нужно поймать и перебросить исключение на уровне вашего двигателя, перебросьте правильно
catch(Exception ex)
{
// whatever logic
throw;
}
или оберните его
catch(Exception ex)
{
// whatever logic
throw new YourEngineException("Some Message", ex);
}
Если вы просто хотите зарегистрировать это, не делайте этого, если это не пересекает границы процесса.
Поймай, войди, перебрось, по моему мнению, это анти-паттерн. Он просто создает записи журнала в несколько миллиардов, достаточно ловить на самом высоком уровне, если вы не уничтожите трассировку стека.
Используйте перенос, если вы можете предоставить дополнительную информацию для исключения. Например, если у вас есть один метод, который загружает данные, изменяет и сохраняет их, вы можете обернуть исключение и добавить «Ошибка« {0} »при сохранении» или что-то еще. Однако не забудьте включить исходящее исключение в качестве внутреннего исключения.