2010-01-21 5 views
2

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

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

+1

Это общее английское слово. Из словаря Merriem-Webster: * «действовать или выполнять требуемые действия в отношении». * Говорить, что проблема была «обработана», означает, что она была решена, разрешена, завершена. –

+1

@BlueRaja, я знаю значение английского слова «обработка». – Benny

ответ

3

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

Вот пример (хотя и надуманный один) в 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 является примером последнего.)

+0

«так, чтобы ваше приложение могло обработать его изящно» - он просто сказал, что не знает, что «ручка» * означает ... –

+1

Да, вот почему я представил пример - вы знаете, 90% сообщения, которое пришел после этой строки, которую вы цитировали. Упреждающее мышление и все такое. – danben

3

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

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

6

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

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

0

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

1

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

Например, вы можете ...

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

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

1

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

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

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

2

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

Смежные вопросы