Java RuntimeException эквивалентно в C #? - PullRequest
25 голосов
/ 23 марта 2011

Имеет ли C # эквивалент Java java.lang.RuntimeException ?

(IE исключение, которое может быть выдано без необходимости перехвата, или сбой программы при возникновении исключения.)

Ответы [ 5 ]

21 голосов
/ 23 марта 2011

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

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

В .NET нет спецификаций исключений, на случай, если вы к этому хотите.

1 голос
/ 23 марта 2011

В .NET поток программы не будет работать, если произойдет необработанное исключение;Приложение Windows будет сдано, а приложение ASP.NET будет пузыриться вплоть до обработчика Application_Error Global.asax.

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

0 голосов
/ 01 марта 2019
  1. C # не имеет проверенных исключений .

  2. Выберите наиболее подходящее исключение из этого списка .

0 голосов
/ 23 марта 2011

.NET не имеет ничего подобного, но вы можете в некоторой степени имитировать это. Вы могли бы , но многие не рекомендуют, оборачивая точку входа вашего приложения в одну попытку / поймать, перехватить искомое исключение и проглотить его. Если что-то ближе ловит, то отлично.

Это построено некоторым образом, например, событие DispatcherUnhandledException в WPF; Вы можете обработать событие и установить DispatcherUnhandledExceptionEventArgs.Handled = true, чтобы приложение продолжало работать.

В общем, я не рекомендую этот шаблон. Вместо этого используйте Trace.WriteLine и, если вам нужно, напишите прослушиватель Trace. Помните: исключения являются исключительными . Происходит что-то необычное, что означает, что лучше остановить приложение, чем продолжать в непредсказуемом состоянии.

0 голосов
/ 23 марта 2011

Я не думаю, что это так. Но почему вы хотите один? Скорее всего, вы можете достичь своей цели с другой частью системы .NET.

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