Быстрые вопросы, ребята, я вижу много кода в отношении блоков try/catch, и я видел это много раз, что люди используют определенные Исключения для вещей. Я имею в виду, что это за причина? Обычно я просто помещаю Exception e внутри блока catch и просто читаю его из Log ... это проблема производительности или просто привычка?Кастинг с необходимостью исключения
-1
A
ответ
2
Имея разные классы исключений, вы можете иметь конкретный код исключения без необходимости определять тип.
Например, вместо написания:
try {
...do some stuff
} catch(Exception e) {
if(e instanceof NullpointerException) {
... do something
} else if(e instanceof IOExceptio) {
... do something else
}
}
вы можете просто написать:
try {
... do something ...
} catch (NullpointerException epe) {
... handle NPE
} catch (IOException ioe) {
... handle IO Exception
}
т.д.
Кроме того, вы можете также выбрать, чтобы поймать только некоторые исключения, и позволяют другие должны быть брошены по методу:
public void doSomeIO() throws IOException {
try {
... do something ...
} catch(NullpointerException) {
... handle NPE
}
}
И тогда вы бы назвали:
try {
doSomeIO();
except (IOException) {
handle the IO exception
}
Таким образом, вы можете иметь определенную обработку исключений, где она принадлежит, и позволять другим пузыриться, где они могут быть обработаны лучше.
0
Ошибка не такая, если вы поймаете ClassCastException
, чем если вы поймаете исключения ArrayIndexOutOfBounds
. Вы должны обращаться с ними соответственно.
так что это как разные методы для разных исключений? любой пример? – sixeco
См. Выше, например. – 323go