Как решаются блоки catch в следующем?Как принято решение, какой блок catch на первом месте?
try{
int a[]=new int[5];
a[5]=30/0;
}
catch(ArithmeticException e){System.out.println("task1 is completed");}
catch(ArrayIndexOutOfBoundsException e){System.out.println("task 2 completed");}
catch(Exception e){System.out.println("common task completed");}
Я знаю, что производные классы приходят первым, а базовые классы следуют за ними. Класс ArithmeticException
и ArrayIndexOutOfBoundsException
приходят из:
java.lang.Exception
java.lang.RuntimeException
java.lang.ArithmeticException
и
java.lang.Exception
java.lang.RuntimeException
java.lang.IndexOutOfBoundsException
java.lang.ArrayIndexOutOfBoundsException
Почему ArithmeticException
помещается в первую очередь?
Возможный дубликат [Почему вопрос при заказе исключений?] (Http://stackoverflow.com/questions/15167899/why-does-order-matter-when-catching-exceptions) – shmosel
* «Почему« Арифметическое исключение » помещается первым? »* Нет причин. 'ArithmeticException' и' ArrayIndexOutOfBoundsException' могут быть в любом порядке, если они оба находятся перед «Исключением». – Andreas