Распространение исключений

#c# #.net #exception #exception-handling

#c# #.net #исключение

Вопрос:

что это значит, когда говорят, что разрешить исключению распространяться вверх на клиента ??
Как это работает?

Ответ №1:

«Клиент» — это любой код, вызывающий рассматриваемый метод, в котором встречается исключение. Вы можете обработать это в методе, или, если вы этого не сделаете, вызывающая сторона получит это исключение. Если он не обрабатывает это, он продолжает подниматься по стеку вызовов методов, пока не достигнет Main(), и ничто не обработало это (или какой-либо эквивалент), в результате чего включается обработчик необработанных исключений.

Тогда «Клиентом» будет любой существующий механизм для отображения пользователю «дружественной» ошибки, будь то веб-страница или winform и т.д.

Ответ №2:

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

Ответ №3:

Когда генерируется исключение, платформа ожидает, что оно будет обработано. Он будет просматривать текущий вызов в стеке вызовов. Если соответствующий catch отсутствует, он переместится вверх по стеку вызовов к вызывающему текущему вызову. Если там нет подходящего catch, он снова переместится на уровень выше. Это будет продолжаться. Если оно достигнет верхней точки входа в программу, то произойдет сбой всей программы, который клиент, очевидно, увидит.