Как обрабатывать большое количество исключений в Java?

1

У меня есть часть кода. В этом есть вероятность получить много исключений. Я сомневаюсь, что для обработки всех этих исключений мне приходится писать блоки catch для каждого типа исключения. Это эффективный способ или нет. За исключением использования ключевого слова throw, если есть какие-либо другие решения, предложите мне сделать это. Любой ответ будет оценен.

Заранее спасибо

Теги:

2 ответа

4
Лучший ответ

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

} catch (Throwable t) {

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

} catch (Exception e) {

который просто ловит Исключение и его подтипы.

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

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

} catch (Exception1 e) { // do something
} catch (Exception2 e) { // do something else

У вас есть еще один вариант, если это ваши собственные исключения: создать иерархию классов собственных исключений

class MyExceptions extends Exception { /* ... */ }
class MyExceptionSubtypeA extends MyException { /* ... */ }
class MyExceptionSubtypeASubsub1 extends MyExceptionSubtypeA { /* ... */ }

Теперь вы можете выбрать любое поддерево классов, например

} catch (MyExceptionSubtypeA sa) {

который будет захватывать как MyExceptionSubtypeA, так и MyExceptionSubtypeASubsub1.

1

Используйте общий вид исключения Exception

try{
//your code here
}
catch(Exception e){
//handle exception
}

Однако это не рекомендуется http://source.android.com/source/code-style.html#exceptionsAll

  • 0
    Я хотел бы повторить, что это не рекомендуется. Сколько исключений вам нужно обработать?
  • 0
    Это плохая практика. Рекомендую против этого.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню