Как перехватить «RemotingException»?

#c# #.net #c#-2.0 #.net-remoting

#c# #.net #c #-2.0 #.net-удаленный доступ

Вопрос:

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

«Первое случайное исключение типа ‘System.Runtime.Удаленное управление.RemotingException’ произошло в mscorlib.dll «

несколько раз в окне вывода отладки. Выполнение продолжается, оно просто выводит это в окне вывода, когда я пытаюсь выполнить свой код. Как узнать, где произошло исключение?

Ответ №1:

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

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

Вас беспокоит только текст отладки, или он не работает? Если это сработает, я бы не волновался. Если это вызывает серьезную озабоченность, перехватите это в WinDebug и проанализируйте, или вы можете указать IDE Visual Studio останавливаться при исключениях первой возможности.

Комментарии:

1. Это не работает. Мое приложение не выходит из строя, но и не работает должным образом.

2. Вам пришлось бы указать отладчику прерваться при RemotingException. Перейдите в Debug-> Exceptions и разверните «Common Language Runtime Exceptions», затем разверните System.Runtime. Удаленное подключение и установите флажок для вызываемого при RemotingException. Затем запустите свой код в разделе debug, и вы должны прерваться, как только будет вызвано RemotingException. Конечно, если проблема заключается не непосредственно в вашем коде, а является симптомом того, как ваш код использует фреймворк, что приводит к сбою фреймворка, диагностировать ее может быть сложнее.