Могу ли я автоматически генерировать описательные исключения со значениями параметров и информацией о классе? - PullRequest
0 голосов
/ 21 апреля 2010

Честно говоря, я не часто бросаю исключения. Я ловлю их еще меньше, по иронии судьбы. В настоящее время я работаю в магазине, где мы позволяем им пузыриться до avicode. Однако по любой причине avicode не настроен на захват некоторых критических битов, которые мне нужны, когда эти исключения возвращаются к моему вниманию. В частности, я хотел бы видеть значения параметров и данные поля класса во время исключения.

Я бы предположил, что с большим набором .Net сервисов я мог бы создать статический метод для сканирования стека, собирать эти биты и сохранять их в виде строки, которую я мог бы вставить в свое сообщение об исключении. Я действительно не знаю, сколько времени потребуется для выполнения такого метода, поскольку производительность больше не беспокоит, когда я включаю один из этих сценариев.

Если это возможно, я уверен, что кто-то сделал это. Если это так, мне трудно найти его. Я думаю, что любой поиск, содержащий «исключение», возвращает слишком много результатов.

В любом случае, это можно сделать? Если это так, некоторые примеры или ссылки будут отличными.

Заранее спасибо за ваше время, Роберт

Ответы [ 3 ]

0 голосов
/ 21 апреля 2010

Я думаю, вы можете использовать CLR Debugging API, чтобы получить больше информации, чем просто трассировка стека, но я не думаю, что это легко. http://msdn.microsoft.com/en-us/library/bb384548.aspx

0 голосов
/ 22 апреля 2010

Не уверен, что это именно то, что вы ищете, но как консультант по AVIcode я могу заверить, что это простое изменение конфигурации для сбора параметров и переменных-членов по пространству имен, классу или методу. Вы даже можете пойти до настройки режима диагностики и сбора локальных переменных. Это приложение в производстве? В производстве, но я бы хотел, чтобы класс включался.

0 голосов
/ 21 апреля 2010

Я готов ошибиться, но не думаю, что можно извлечь значения параметров, обходя стек. Вы, конечно, не можете сделать это с классами StackTrace и StackFrame .

С точки зрения безопасности это имеет смысл, поскольку в стек может быть встроена конфиденциальная информация, к которой неавторизованный код не должен иметь доступа.

Если текущий кадр стека не перехватывает исключение и записывает значения его параметров в экземпляр Exception перед повторным броском, то, боюсь, вам не повезет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...