Смотрела на работу исключений по такому коду:
public class HelloWorld {
public static void main(String[] args)
{
System.out.println("Адронный Коллайдер запущен");
try
{
start(0);
}
catch(Exception e)
{
System.out.println(Arrays.toString(e.getStackTrace()));
e.printStackTrace();
}
System.out.println("Адронный Коллайдер остановлен");
}
public static void start(int n)
{
System.out.println("Все отлично работает: " + n);
System.out.println(2/n);
System.out.println("Никаких проблем нет: " + n);
}
}
Вывод был таким:
Адронный Коллайдер запущен
Все отлично работает: 0
[HelloWorld.start(HelloWorld.java:25), HelloWorld.main(HelloWorld.java:11)]
Адронный Коллайдер остановлен
java.lang.ArithmeticException: / by zero
at HelloWorld.start(HelloWorld.java:25)
at HelloWorld.main(HelloWorld.java:11)
Даже если убрать строчку 13 из кода, все равно сперва выведется строка "Адронный Коллайдер остановлен". Но по моей логике, раз она идет после блока catch, то и выводиться должна после него. Почему же она выводится до?