win.xak.ru

Здесь качают взломанные программы, бесплатно

Обработка исключений

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

Конструкция try…catch…finally — это тот обработчик событий который поможет вам понять где произошла ошибка. При возникновении исключения в блоке try управление переходит в блок catch, который может обработать данное исключение. Если такого блока не найдено, то пользователю отображается сообщение о необработанном исключении, а дальнейшее выполнение программы останавливается. И чтобы подобной остановки не произошло, и надо использовать блок try..catch. К примеру, у нас есть массив, в которого нет индекса 5, но давайте представим что мы допустили сознательную ошибку. Что будет? Конечно ошибка.


int[] numbers = new int[4];
numbers[5]=16;
System.out.println(numbers[5]);

Но давайте код обернет в конструкцию try…catch:


try{
    int[] numbers = newint[4];
    numbers[5]=16;
    System.out.println(numbers[5]);
}
catch(Exception ex){   
    ex.printStackTrace();
}
System.out.println("Программа завершена");

Вы можете больше отлавливатьошибок в конструкции try, просто дописав еще один catch.

Если вы пишете несколько блоков catch, вам следует располагать их в порядке, согласно тому, как соответствующие исключения унаследованы друг от друга. Иначе не всё исключения будут корректно работать. О всех существующих исключений вы можете узнать на официальном сайтеhttps://developer.android.com, библиотека java.lang раздел Exception


try {
    int a = 10;
    int v = 10 / -0;
} catch (ArithmeticException e) {
    Log.w("Арифметическая ошибка","" + e);
}

Я использовал Арифметическое исключение которое нашел на официальном сайте. Для вывода в консоль я использовал класса Log, метод w, который принимает два String параметра.

Я получил исключение: 08-29 21:35:48.751 7175-7175/com.exa231mple.user.myappl23ication W/Арифметическая ошибка: java.lang.ArithmeticException: divide by zero

И напоследок рассмотрим ключевое слово finally иthrow

Еслиу вас будет необходимость по мимо обработки исключенияеще что-то выполнить, дописываемfinally, это тоже самое что и в условиях else.


try {
    int a = 10;
    int v = 10 / 0;
} catch (Exception e) {
    Log.w("Арифметическая ошибка","" + e);
} finally {
    Log.w("", "Этот код выполниться в любом случае");
}

C throw немного сложнее, он работает по принципу переадресовывателя. Он отправляет (бросает исключение) тому кто его вызывает. Чтобы лучше понять, я приведу пример из реальной жизни.

Вы послали человека сходить за хлебом, но его в магазине не оказалось, поэтому человек получает исключение, которое он передаст вам. «Уважаемый, в магазине не было хлеба».

Попробуйте сначала так


static void getA() throws Exception{ 
    try{
    	int b = 10/ 0;
    } catch (Exception e) { 
        // throw new Exception ("Так нельзя делать");
        System.out.println(e);
        }
    }
    public static void main(String[] args){ 
        System.out.println("Сработал"); 
        try{
            getA(); 
            
        }catch(Exception e1){ 
            System.out.println(e1.getMessage());
            
        }
    }

Сработал
java.lang.ArithmeticException: / by zero

МетодgetA() обработает самостоятельно ошибку, не сообщив об этой главный метод main.

Но если мы сделаем так:


static void getA() throws Exception{ 
    try{
        int b = 10/ 0;
    } catch (Exception e) { 
        throw new Exception ("Так нельзя делать"); // это исключение
            //System.out.println(e);
        }
    }
    public static void main(String[] args){ 
        System.out.println("Сработал"); 
        try{
            getA(); //Вернет
            
        }catch(Exception e1){ //обработает исключение
            System.out.println(e1.getMessage()); // выведет исключение  
            //getMessage() обрабатывает исключение, в нашем случае уберет java.lang.Exception
            //оставив только текст "Так нельзя делать"
        }
    }

Мы увидим следующий результат:
Сработал
Так нельзя делать

Навигация по постам

Комментарии

Сейчас опубликовано: 0 комментарий(ев)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *