Исключения: поймать (Exception ex) вопрос - PullRequest
2 голосов
/ 06 января 2011

Я понимаю, что когда за catch следует аргумент объекта, полученный из базового класса исключений, он будет обрабатывать только это исключение. Но я не понимаю, почему мне нужно объявлять переменную этого типа, "ex" или что-то еще. Я знаю, что он будет "заполнен" объектом исключения ... но просто не получится.

Ответы [ 6 ]

7 голосов
/ 06 января 2011

У вас нет для указания переменной.Например, вы можете написать:

try
{
    ...
}
catch (IOException)
{
    // Do something
}

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

1 голос
/ 06 января 2011
try {
}
catch(SQLException){
//do something not using exception info
}
catch(OtherException ex){
//do something else using exception info
}
catch(Exception ex){
//do something else
Logger.Log(ex);
}
1 голос
/ 06 января 2011

Вам не нужно объявлять какие-либо переменные. Вы можете получить это так:

try
{
   //something here...
}
catch (ThreadAbortException)
{
   //handle only ThreadAbortException..
}
0 голосов
/ 06 января 2011

Переменная будет содержать информацию о самом исключении, наиболее важно текст сообщения.

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

0 голосов
/ 06 января 2011

вы можете использовать его, чтобы найти больше информации об этом исключении

("Exception Message: {0}", ex.Message) or 

about inner exception, ex.InnerException;
0 голосов
/ 06 января 2011

Если вы не объявляете переменную, содержащую перехваченное исключение, как вы собираетесь анализировать выданный объект исключения?

Если вам все равно, вас не заставляютобъявить это.Но, как правило, это хорошая идея, если вы хотите что-то с этим сделать.

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