Может кто-нибудь объяснить мне обработку исключений? - PullRequest
2 голосов
/ 21 января 2010

Я думаю, что это глупый вопрос, но я слышу и вижу термин исключение , обрабатывающий много.Я использовал try / catch, но мне все еще интересно, что на земле означает « processing ».Может ли кто-нибудь любезно привести пример того, что мы можем сказать, что исключение на самом деле ' обработано '?

извините за плохой английский, надеюсь, я ясно дал понять.

Ответы [ 7 ]

6 голосов
/ 21 января 2010

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

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

3 голосов
/ 21 января 2010

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

Вот пример (хотя и надуманный) в Java:

public int arrayRetrieve(int[] a, int index) {
   return a[index]; 
}

Учитывая эту функцию, нет гарантии, что index будет действительной позицией в a. В Java это вызовет ArrayOutOfBoundsException.

Код, который вызывает arrayRetrieve, должен знать об этой возможности и соответственно обрабатывать этот случай:

int num = 0;
try {
    num = arrayRetrieve(someArray, 77);
}  catch (ArrayOutOfBoundsException e) {
    // Set num to a default value, or log an error, or however you want to handle this case
}

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

(Одна из причин, по которой я сказал, что этот пример надуманный, заключается в том, что в Java, в частности, есть два вида Exception - тип, который вы должны явно отловить, и тип, который вы не делаете. ArrayOutOfBoundsException - пример последнего .)

3 голосов
/ 21 января 2010

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

Это противопоставлено глотанию исключения, которое перехватывает исключение и ничего с ним не делает.

2 голосов
/ 21 января 2010

Обработка исключений относится к действию обработки исключительного события в вашей программе таким образом, что программа не аварийно завершает работу, а вместо этого продолжает работать значимым образом. Вы говорите, что использовали try / catch, тогда все, что вы делаете в блоке catch, - это фактическая обработка исключений.

1 голос
/ 21 января 2010

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

Когда вы получаете исключение, вы можете «обработать» это исключение, исправляя все, что вызвало исключение, и продолжая.

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

1 голос
/ 21 января 2010

На простом уровне «обработка» означает просто «обращение с».

Например, вы могли бы ...

  • Записать данные об ошибках в файл или базу данных
  • Отображение сообщения об ошибке для пользователя
  • Завершить выполнение программы

.. в зависимости от серьезности ошибки / вида разрабатываемого вами приложения.

0 голосов
/ 21 января 2010

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

...