1. Сводка исключений Java:
Исключение означает ненормальную работу при запуске программы
1. Происхождение исключения:
Описание проблем в реальных вещах через форму классов Java и запечатано в объект
На самом деле, это является проявлением объекта после того, как Java описывает ненормальные ситуации.
2. Есть два типа проблем: один - серьезная проблема, а другая - серьезная проблема
Для серьезных случаев Java описывает это через класс ошибок
Ошибка обычно не записывается, чтобы обработать его.
Для несерьезного, Java описывается классом исключений
Для исключения, вы можете использовать целевые методы обработки для ее обработки
3. Общие исключения включают в себя: угловые маркерные маркерные исключения, исключения из нулевого указателя ...
4. Будь то ошибка или исключение, имеет некоторое общее содержание.
Например: ненормальные новости, причины и т. Д.
Throwable // Premium Class (следующие два класса извлекаются из той же общности)
|-террор
|-excption // Два подкласса (есть много проблем, определенных (исключение происходит)) /*Имя родительского класса-это имя суффикса подкласса* /
Пример 1: Пример возникновения исключения
класс демонстрация {public int div (int x, int y) {return x/y; }} класс ExceptionDemo {public static void main (string args []) {demo d = new demo (); int x = d.div (4,0); // 0 как Divisor System.out.println ("x ="+x); System.out.println ("Over"); }}Результаты работы:
Исключение в потоке "Main" java.lang.arithmeticexception: / by Zero
на Demo.div (ExceptionDemo.java:5)
на exceptionDemo.main (ExceptionDemo.java:15)
Из приведенных выше результатов мы можем проанализировать, что исключение произошло в обеих линиях 5 и 15. Это связано с тем, что механизм деления, делитель не может быть 0, и исключение будет брошено при выполнении операции.
Пример 2: Исключение Пример 2, переполнение памяти
класс демонстрация {public int div (int x, int y) {return x/y; }} class exceptionDemo {public static void main (string args []) { /*demo d = new demo (); int x = d.div (4,0); System.out.println ("x ="+x); System.out.println ("Over"); */ byte [] arr = новый байт [1024*1024*1000]; }}Результаты работы:
Исключение в потоке "Main" java.lang.outofmemoryerror: Java Heap Space
на exceptionDemo.main (ExceptionDemo.java:19)
java.lang.outofmemoryerror: представляет исключение переполнения памяти
2. Обработка исключений:
Для обработки исключений Java предоставляет уникальные заявления для обработки
Формат
пытаться
{
код, который должен быть обнаружен;
}
ловить
{
Код для обработки исключений; (метод обработки)
}
Окончательно
{
Код, который определенно будет выполнен; (метод обработки)
}
Пример 1: демонстрируйте оператор Try Catch
класс демонстрация {public int div (int x, int y) {return x/y; }} класс ExceptionDemo {public static void main (string args []) {demo d = new demo (); try {int x = d.div (4,0); System.out.println ("x ="+x); } catch (Exception e) {System.out.println ("Разводная дивизора"); } System.out.println ("Over"); /*byte [] arr = new Byte [1024*1024*1000];*/}}Результаты работы:
В делителе есть ошибка
над
Анализ результатов: Когда программа работает, когда выполняется оператор деления: возврат x/y, генерируется объект исключения. New Archmeticexception (), оператор try захватывает этот объект параметрами оператора Catch.
Исключение e = new Archmeticexception ();
После запуска оператора обработки улова проблема обрабатывается, окончательный оператор завершен, а вывод закончился
Пример 2: Выполните общие операции метода на захваченных объектах исключений (метод родительского класса бросается)
String getMessage (); // получить информацию об исключении
ToString () // return Excecutement Имя: Информация об исключении
PrintStackTrace () // Имя исключения вывода, информация об исключении, местонахождение исключения
класс демонстрация {public int div (int x, int y) {return x/y; }} класс ExceptionDemo {public static void main (string args []) {demo d = new demo (); try {int x = d.div (4,0); System.out.println ("x ="+x); } catch (Exception e) {System.out.println ("Разводная дивизора"); // Получить Информационную систему исключения.out.println (e.getMessage ()); // Получить информацию об исключении, System Exception System.out.println (e.toString ()); // Вывод Имя исключения, информация об исключении, местоположение, где происходит исключение e.printstacktrace (); } System.out.println ("Over"); /*byte [] arr = new Byte [1024*1024*1000];*/}}Результаты работы:
В делителе есть ошибка
/ по нулю
java.lang.arithmeticexception: / by Zero
java.lang.arithmeticexception: / by Zero
на Demo.div (ExceptionDemo.java:5)
на exceptionDemo.main (ExceptionDemo.java:17)
над
Из анализа выполняемых результатов механизм обработки исключений по умолчанию JVM фактически вызывает метод PrintStackTrace.
Пример 3: два способа обработки исключений
1. бросьте его на виртуальную машину JVM для обработки
2. Спокойный обработка исключения самостоятельно
класс демонстрация {public int div (int x, int y) бросает исключение/*исключение, где могут возникнуть исключения*/{return x/y; }} класс ExceptionDemo {public static void main (string args []) {demo d = new demo (); int x = d.div (4,0); System.out.println ("x ="+x); System.out.println ("Over"); }}Результаты работы:
ExceptionDemo.java:15: Ошибка: Не сообщается об ошибке исключения исключения; это должно быть захвачено или объявлено для броска
int x = d.div (4,0);
^
1 ошибка
Анализ результатов: это потому, что никаких исключений не обрабатывается
Метод обработки 1: непрерывно бросайте исключения и позвольте виртуальной машине JVM.
класс демонстрация {public int div (int x, int y) бросает исключение/*исключение, где могут возникнуть исключения*/{return x/y; }} class exceptionDemo {public static void main (String args []) выбрасывает Exception /*Продолжение бросает исключения и дайте виртуальной машине* / {demo d = new demo (); int x = d.div (4,0); System.out.println ("x ="+x); System.out.println ("Over"); }}Метод обработки 2: Обработка исключений самостоятельно
класс демонстрация {public int div (int x, int y) бросает исключение/*исключение, где могут возникнуть исключения*/{return x/y; }} класс ExceptionDemo {public static void main (string args []) {demo d = new demo (); попробуйте // обрабатывать исключение самостоятельно {int x = d.div (4,0); System.out.println ("x ="+x); } catch (Exception e) {System.out.println ("Разводная дивизора"); // Получить информацию об исключении, System Exception System.out.println (e.toString ()); System.out.println ("Over"); }}}Суммировать:
Объявить исключения по функциям. Это удобно для улучшения безопасности, позволяя обрабатывать источник вызовов без обработки сбоев компиляции.
Пример 4: Обработка нескольких исключений
1. При объявлении исключений рекомендуется объявить более конкретные исключения, чтобы с ними можно было обращаться в более конкретно.
2. Объявите несколько исключений, и есть несколько блоков вылова. Не определяйте ненужную ловушку быстро.
Если есть отношения наследования в нескольких блоках улова, блок уловов исключений родительского класса находится ниже.
класс демонстрация {public int div (int x, int y) бросает арифметикексапс, arrayindexoutofboundsexception {int arr [] = new int [x]; System.out.println (arr [4]); вернуть x/y; }} класс ExceptionDemo {public static void main (string args []) {demo d = new demo (); try {int x = d.div (4,0); System.out.println ("x ="+x); } catch (arithmeticexception e) / *Разделение объекта исключения получено, первое выполнение - * / {System.out.println ("Разводной дивизир"); // Получить информацию об исключении, System Exception System.out.println (e.toString ()); System.out.println ("Over"); } catch (arrayIndexoutOfBoundSexception e) / *Прием объект с данными из границ, второе выполнение - * / {System.out.println ("Arrayout"); // Вывод Информационная система исключения. } catch (Exception e) /*Получите исключение родительского класса и выполните его в конце. Рекомендуется не писать это, пусть программа прекратится*//*использовать полиморфизм*/ {System.out.println (e.toString ()); }}}Результаты работы:
Массив не за пределами
java.lang.arrayindexoutofboundsexception: 4
предположение:
При обработке улова вы должны определить конкретные методы обработки в уловке.
Не просто определяйте e.printstacktrace ().
Не пишите оператор вывода
Поскольку пользователи не могут понять это, лучше всего сохранить его в файле и отправлять нашим разработчикам, чтобы просмотреть его регулярно.
Пример 5: Пользовательское исключение
Вы заметили, что исключения, которые мы используем, все инкапсулируются в Java
Однако в реальном развитии исключения, которые появляются в нашей программе, могут заключаться в том, что Java не инкапсулируется.
В настоящее время вам нужно определить это самостоятельно
Согласно вышеуказанному коду, я определяю, что делитель не может быть отрицательным числом. Код выглядит следующим образом
класс демонстрация {public int div (int x, int y) бросает fushuexception/*top исключение*/{if (y <0) {throw new fushuexception («знаменатель имеет отрицательное число ------/bu fushu», y); /*Объект, который вручную бросает исключение*/} возвращать x/y; }} класс fushuexception расширяет Exception {private int value; Fushuexception (String m, int value) {super (m); /*Передача параметров к методу getMessage исключения родительского класса*/ this.value = value; } public int getValue () /*Настраиваемый метод, возвращает отрицательное число* / {return value; }} класс ExceptionDemo {public static void main (string args []) {demo d = new demo (); try {int x = d.div (4, -3); System.out.println ("x ="+x); } catch (fushuexception e) /*объект исключения Catch* / {System.out.println (e.getMessage ()+e.getValue ()); } System.out.println ("Over"); }}Результаты работы:
Отрицательное число появляется в знаменателе -----/BU Fushu-3
над
Из приведенных выше результатов мы видим
В этой программе делитель составляет -3, что также считается неправильным и не может быть выполнено.
Тогда вам нужно иметь пользовательское описание этой проблемы.
При броске объекта исключения внутри функции появляется соответствующее действие обработки.
Или обрабатывается внутри.
Либо объявите о функции для вызывающего абонента, чтобы справиться с этим.
Вообще говоря, исключения появляются в функции и должны быть объявлены на функции.
Было обнаружено, что в печатном результате было только имя исключения, но не было никакой информации.
Потому что пользовательское исключение не определяет информацию.
Как определить информацию об исключении?
Потому что работа исключения была завершена в родительском классе.
Следовательно, подкласс должен передавать информацию об исключении в родительский класс только при его построении через супер -оператор.
Затем вы можете напрямую получить пользовательскую информацию об исключении с помощью метода GetMessage.
Пользовательские исключения должны быть исключением на пользовательском наследстве.
Унаследовать исключение Причина:
Система исключений имеет функцию: потому что как классы исключений, так и объекты исключений.
Они все бросаются. Эта броска является уникальной особенностью бросаемой системы.
Только классы и объекты в этой системе могут работать с помощью бросков и бросков.
Разница между бросками и броском
Броски используются на функциях.
Бросок используется в функции.
Класс исключений с последующими бросками. Может сопровождаться несколькими. Разделяется запятыми.
За броском следует объект исключения.
Пример 6: Существует специальное исключение подкласса в исключении Runtimeexception
Если исключение добавлено в содержимое функции, функция может быть объявлена без объявления, и компиляция будет передана.
Если исключение объявлено на функции, абонент не может его обработать, и компиляция будет сделана через
Причина, по которой нет необходимости объявлять функцию, заключается в том, что абоненту не нужно обращаться с ней.
Когда это исключение произойдет, я надеюсь, что программа прекратится, потому что она не может работать во время работы. Я надеюсь, что программа остановится после прекращения программы.
Программист изменил код.
класс демонстрация {public int div (int x, int y) бросает fushuexception/*Результат броска или не бросания одинаково*/{if (y <0) {throw new fushuexception («знаменатель имеет отрицательное число -----/bu fushu», y); } вернуть x/y; }} class fushuexception extends runtimeexception /*neheritance runtimeexception* /{fushuexception (string m, int value) {super (m); }} класс ExceptionDemo {public static void main (string args []) {demo d = new demo (); int x = d.div (4, -3); /*Исключение появится после запуска, не будет проблем с компиляцией*/ system.out.println ("x ="+x); System.out.println ("Over"); }}Результаты работы:
Исключение в потоке "Main" Fushuexception: в знаменателе появляется отрицательное число ------/bu fushu
на Demo.div (ExceptionDemo.java:7)
на exceptionDemo.main (ExceptionDemo.java:26)
Из приведенных выше результатов мы видим:
Когда пользовательское исключение: если происходит исключение, операция не может быть продолжена.
Пусть пользовательское исключение наследует Runtimeexception.
Для исключений, есть два типа:
1. Исключение обнаружено во время компиляции.
2. Исключение, которое не обнаружено во время компиляции (исключение времени выполнения. Runtimeexception и его подклассы)
Приведенная выше статья полностью понимает механизм обработки исключений в Java - это весь контент, который я поделился с вами. Я надеюсь, что это может дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.