Вы можете использовать Reflection для вывода всех свойств Исключения, однако вы должны быть осторожны с чрезмерно сложным кодом регистрации / обработки исключений, так как исключение внутри вашего обработчика исключений, вероятно, оставит вас без полезной отладочной информации для отладки вашего оригинала. исключение.
В частности, если вы собираетесь рекурсивно выводить любые не примитивные объекты этого исключения, подумайте, что произойдет, если у вас есть какие-либо циклические ссылки.
Обычно я просто использую ex.ToString () всякий раз, когда хочу записать все в журнал - он выглядит не очень красиво и может не содержать всех данных в исключении (если базовые классы не перегружены ToString () метод) однако я нахожу, вообще говоря, он содержит достаточно информации.
В качестве альтернативы, если вы имеете дело с пользовательскими исключениями, которые находятся под вашим контролем, вы, вероятно, найдете сериализацию лучшим решением.