Множественный catch

129
28 ноября 2020, 05:30
public class Test {
    public static void main(String[] args) {
        try {
            method1();
            method2();
            method3();
        } catch (NullPointerException e) {
            System.out.println("Null");
        } catch (ArithmeticException e) {
            System.out.println("Arith");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Array");
        }
    }
    public static void method1() {
        int a = 10;
        int b = 0;
        System.out.println(a / b);
    }
    public static void method2() {
        int[] array = new int[2];
        array[5] = 10;
    }
    public static void method3() {
        String s = null;
        String m = s.toLowerCase();
    }
}

Почему не отрабатывает программа? То есть почему только Arith в консоли я вижу? Потому что "выбран" method1? Чтобы такой код отработал каждый метод должен быть в отдельном try catch блоке?

Answer 1

В try вы располагаете блок кода

method1();
method2();
method3();

Как только в этом коде выбрасывается исключение, весь блок кода останавливаеся и переходит в бок catch

Если хотите продолжать работу даже когда method1 бросил исключение - делайте для него отдельный try

try {
     method1();
} catch (ArithmeticException e) {
     System.out.println("Arith");
}
try {
     method2();
     method3();
} catch (NullPointerException e) {
     System.out.println("Null");
}  catch (ArrayIndexOutOfBoundsException e) {
     System.out.println("Array");
}

Ну и методы 2 и 3 тоже разносим на разные try блоки, если хотим выполнить каждый из них в любом случае. А еще лучше проверять корректность введенных аргументов внутри функции, но это уже другая история

READ ALSO
SQLite ошибка при добавление

SQLite ошибка при добавление

Нашел пример в интернете как работать с бд решил реализовать под свою задачуСоздал класс DBHelper:

135
Sugar ORM Android

Sugar ORM Android

Решил изучить эту ORM потому что на примерах она показалось мне легкимТак вот есть простой объект:

124
Как я могу запускать DialogFragment после загрузки Activity?

Как я могу запускать DialogFragment после загрузки Activity?

Есть DialogFragment который должен запускаться при открытии Activity, но возникла проблема, видно тормоза, думаю из-за того что DialogFragment грузиться вместе...

126
Не срабатывает keyup() при вставке значения в input чере контекстное меню “Вставить” , disabled НЕ удаляется. Как исправить?

Не срабатывает keyup() при вставке значения в input чере контекстное меню “Вставить” , disabled НЕ удаляется. Как исправить?

Есть форма (код ниже)При вставке валидного значения в поле с помощью Ctrl+V все работает - кнопка submit становиться доступной

113