порядок отлова исключений? - PullRequest
2 голосов
/ 08 декабря 2010

Допустим, у меня есть системное исключение, такое как UnauthorizedAccessException, и исключение, которое я написал сам. Есть ли определенный порядок, который я должен использовать при отлове исключений? Я предполагаю, что это все еще от самого конкретного к наименее конкретному?

Спасибо:)

Ответы [ 3 ]

16 голосов
/ 08 декабря 2010

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

Так как это тип , который имеет значение (и иерархия наследования); если эти два не имеют отношения наследования (то есть это не тот случай, когда YourFunkyException наследует от UnauthorizedAccessException прямо или косвенно), то это не имеет значения.

1 голос
/ 08 декабря 2010

Да, прежде всего поймайте "пользовательское" исключение, подобное вашему, и у вас есть catch (Exception ex) последний для всех остальных типов.

0 голосов
/ 08 декабря 2010

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

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

- ОБНОВЛЕНИЕ Я сделал этот ответ, предполагая что-то вроде этого ..

try block {

// 1.Операция ввода-вывода файла, которая может из-за системного исключения

// 2.доступ к веб-сервису или что-то, что может вызвать пользовательское исключение

} catch (первое возможное системное исключение) {} catch (второе перехватить ваше пользовательское исключение) {} catch (Exception ex) {// catch all}

Порядок (как сказал другой человек) .. можно рассматривать как порядок операторов кода.

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