1. Java 예외 요약 :
예외는 프로그램이 실행될 때 비정상적인 작동을 의미합니다
1. 예외의 기원 :
Java 클래스의 형태를 통해 실제 문제에 대한 문제에 대한 설명과 물체에 봉인
실제로, Java가 비정상적인 상황을 묘사 한 후에는 대상 표현입니다.
2. 두 가지 유형의 문제가 있습니다. 하나는 심각한 문제이고 다른 하나는 심각한 문제입니다.
심각한 경우, Java는 오류 클래스를 통해이를 설명합니다.
오류는 일반적으로 처리하기 위해 작성되지 않습니다.
비 시력의 경우 Java는 예외 클래스에서 설명합니다
예외적으로 대상 처리 방법을 사용하여 처리 할 수 있습니다.
3. 일반적인 예외는 다음과 같습니다. 배열 코너 마커 크로스 국경 예외, 널 포인터 예외 ...
4. 오류 또는 예외에 일반적인 내용이 있는지 여부.
예 : 비정상적인 뉴스, 원인 등.
Throwable // 프리미엄 클래스 (다음 두 클래스는 동일한 공통점에서 추출됩니다)
|-오류
| --excption // 두 개의 서브 클래스 (많은 문제가 정의되어 있습니다 (예외가 발생)) /*부모 클래스 이름은 서브 클래스 접미사 이름* /입니다.
예 1 : 예외 발생의 예
클래스 데모 {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); // divisor system.out.println ( "x ="+x); System.out.println ( "Over"); }}실행 결과 :
스레드의 예외 "main"java.lang.arithmeticexception : / by zero
at demo.div (Exceptiondemo.java:5)
AT EXCERDO.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 힙 공간
At ExceptionDemo.Main (ExceptionDemo.java:19)
java.lang.outofMemoryError : 메모리 오버플로 예외를 나타냅니다
2. 예외 처리 :
예외 처리를 위해 Java는 처리를위한 고유 한 문장을 제공합니다
체재
노력하다
{
감지 해야하는 코드;
}
잡다
{
처리 예외를위한 코드; (처리 방법)
}
마지막으로
{
확실히 실행될 코드; (처리 방법)
}
예 1 : 시도 캐치 문을 보여줍니다
클래스 데모 {public int div (int x, int y) {return x/y; }} class ExceptionDemo {public static void main (String args []) {demo d = new demo (); try {int x = d.div (4,0); System.out.println ( "x ="+x); } catch (예외 e) {System.out.println ( "이혼 한 디바이저"); } system.out.println ( "Over"); /*byte [] arr = new Byte [1024*1024*1000];*/}}실행 결과 :
제수에는 오류가 있습니다
~ 위에
결과 분석 : 프로그램이 실행될 때, 디비전 명령문이 실행되면 : return x/y, 예외 객체가 생성됩니다. 새로운 archmeticexception (), try 문은 캐치 문의 매개 변수 로이 객체를 캡처합니다.
예외 e = 새로운 archmeticexception ();
캐치 프로세싱 문을 실행 한 후 문제가 처리되고 최종 문장이 완료되고 출력이 끝납니다.
예 2 : 캡처 된 예외 객체에서 공통 방법 작업을 수행합니다 (부모 클래스 던지기 방법)
문자열 getMessage (); // 예외 정보를 얻습니다
toString () // 반환 예외 이름 : 예외 정보
PrintStackTrace () // 출력 예외 이름, 예외 정보, 예외 발생 위치
클래스 데모 {public int div (int x, int y) {return x/y; }} class ExceptionDemo {public static void main (String args []) {demo d = new demo (); try {int x = d.div (4,0); System.out.println ( "x ="+x); } catch (예외 e) {System.out.println ( "이혼 한 디바이저"); // 예외 정보 System.out.println (e.getMessage ()); // 예외 정보, 예외 이름 system.out.println (e.toString ()); // 출력 예외 이름, 예외 정보, 예외가 발생하는 위치 e.printstacktrace (); } system.out.println ( "Over"); /*byte [] arr = new Byte [1024*1024*1000];*/}}실행 결과 :
제수에는 오류가 있습니다
/ 0으로
java.lang.arithmeticexception : / by zero
java.lang.arithmeticexception : / by zero
at demo.div (Exceptiondemo.java:5)
At ExceptionDemo.Main (ExceptionDemo.java:17)
~ 위에
실행 결과 분석에서 JVM의 기본 예외 처리 메커니즘은 실제로 PrintStackTrace 메소드를 호출합니다.
예 3 : 예외 던지기를 처리하는 두 가지 방법
1. 처리를 위해 JVM 가상 머신에 던져
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"); }}실행 결과 :
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 [])은 예외를 계속 예외로 제외하고 가상 머신에 계속 제공* / {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; }} class ExceptionDemo {public static void main (String args []) {demo d = new demo (); // 예외를 직접 처리하십시오 {int x = d.div (4,0); System.out.println ( "x ="+x); } catch (예외 e) {System.out.println ( "이혼 한 디바이저"); // 예외 정보, 예외 이름 system.out.println (e.toString ()); System.out.println ( "Over"); }}}요약 :
함수에 대한 예외를 선언합니다. 보안을 개선하는 것이 편리하여 컴파일 장애를 처리하지 않고 통화 소스를 처리 할 수 있습니다.
예제 4 : 다중 예외 처리
1. 예외를 선언 할 때보다 구체적으로 처리 할 수 있도록보다 구체적인 예외를 선언하는 것이 좋습니다.
2. 몇 가지 예외를 선언하면 몇 가지 캐치 블록이 있습니다. 불필요한 캐치를 빨리 정의하지 마십시오.
여러 캐치 블록에 상속 관계가있는 경우, 부모 클래스 예외 캐치 블록이 아래에 배치됩니다.
클래스 데모 {public int div (int x, int y)는 arithmeticexception, arrayindexoutofboundsexception {int arr [] = new int [x]; System.out.println (ARR [4]); 반환 x/y; }} class 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 ( "divorceived divisor"); // 예외 정보, 예외 이름 system.out.println (e.toString ()); System.out.println ( "Over"); } catch (arrayindExoutOfBoundSexception e) / *데이터가 바운드를 벗어난 객체를 수신하고 두 번째 실행은 * / {system.out.println ( "arrayout")입니다. // output Exception Information System.out.println (e.toString ()); } catch (예외 e) /*부모 클래스 예외를 받고 결국 실행합니다. 이 글을 쓰지 말고 프로그램이 종료하도록 권장됩니다*//*다형성*/ {System.out.println (e.toString ()); }}}실행 결과 :
배열은 한계를 벗어났습니다
java.lang.arrayindexoutofboundsexception : 4
제안:
캐치를 처리 할 때는 캐치에서 특정 처리 방법을 정의해야합니다.
E.printstacktrace ()를 단순히 정의하지 마십시오.
출력 문을 작성하지 마십시오
사용자는 이해할 수 없기 때문에 파일에 저장하여 개발자에게 보내서 정기적으로 볼 수 있습니다.
예 5 : 사용자 정의 예외
우리가 사용하는 예외가 모두 Java로 캡슐화된다는 것을 알고 있습니까?
그러나 실제 개발에서 우리 프로그램에 나타나는 예외는 Java가 캡슐화되지 않을 수 있습니다.
현재 직접 정의해야합니다
위의 코드에 따르면, 제수가 음수가 될 수 없다고 정의합니다. 코드는 다음과 같습니다
클래스 데모 {public int div (int x, int y)는 fushuexception/*예외를 찍는다*/{if (y <0) {Throw new fushuexception ( "분모는 음수 ------/bu fushu", y); /*예외를 수동으로 던지는 객체*/} 반환 x/y; }} class fushuexception 확장 예외 {private int value; fushuexception (String m, int value) {super (m); /*부모 클래스 예외의 getMessage 메소드로 매개 변수를 전달합니다*/ this.value = value; } public int getValue () /*사용자 정의 된 메소드, 반환 음수* / {return value; }} class 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 EXCERTION OBJECT* / {system.out.println (e.getMessage ()+e.getValue ()); } system.out.println ( "Over"); }}실행 결과 :
분모에 음수가 나타납니다 -----/bu fushu-3
~ 위에
위의 결과에서 볼 수 있습니다
이 프로그램에서, divisor는 -3이며, 또한 잘못된 것으로 간주되어 수행 할 수 없습니다.
그런 다음이 문제에 대한 사용자 정의 설명이 필요합니다.
함수 안에 예외 객체를 던질 때 해당 처리 작업이 제공되어야합니다.
또는 내부적으로 처리.
발신자가 기능을 처리하도록 선언하십시오.
일반적으로 말하면, 예외는 함수에 나타나며 함수에 대해 선언해야합니다.
인쇄 된 결과에는 예외 이름 만 있었지만 예외 정보는 없었습니다.
사용자 정의 예외는 정보를 정의하지 않기 때문입니다.
예외 정보를 정의하는 방법?
예외 정보의 작동이 부모 클래스에서 완료되었으므로.
따라서 서브 클래스는 슈퍼 문을 통해 예외 정보를 부모 클래스에 전달하면됩니다.
그런 다음 getMessage 메소드를 통해 사용자 정의 예외 정보를 직접 얻을 수 있습니다.
사용자 정의 예외는 사용자 정의 클래스 상속 예외 여야합니다 .
예외를 상속받은 이유 :
예외 시스템에는 기능이 있습니다. 예외 클래스와 예외 객체가 모두 발생하기 때문입니다.
그들은 모두 던질 수 있습니다. 이 던지기 성은 던질 수있는 시스템의 독특한 특징입니다.
이 시스템의 클래스와 객체 만 던지기와 던지기로 작동 할 수 있습니다.
던지기와 던지기의 차이
던지기는 함수에 사용됩니다.
던지기는 함수 내에서 사용됩니다.
예외 클래스 뒤에 던져집니다. 다중 뒤에있을 수 있습니다. 쉼표로 분리.
던지기에는 예외 객체가 이어집니다.
예 6 : runtimeexception 예외에는 특별한 서브 클래스 예외가 있습니다.
함수 내용에 예외가 발생하면 선언없이 함수를 선언 할 수 있으며 컴파일이 전달됩니다.
함수에 대한 예외가 선언되면 발신자는 처리 할 수 없으며 컴파일은
기능을 선언 할 필요가없는 이유는 발신자가 처리 할 필요가 없기 때문입니다.
이 예외가 발생하면 프로그램이 실행 중에 실행할 수 없기 때문에 프로그램이 중지되기를 바랍니다. 프로그램이 중단 된 후 프로그램이 중단되기를 바랍니다.
프로그래머가 코드를 수정했습니다.
클래스 데모 {public int div (int x, int y) 던지기 또는 던지기의 결과는 동일합니다*/{if (y <0) {new fushuexception ( "탈노미네이터는 음수 -----/bu fushu", y); } 반환 x/y; }} class fushuexception은 runtimeexception /*상속 runtimeexception* /{fushuexception (String m, int value) {super (m); }} class 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
at demo.div (Exceptiondemo.java:7)
At ExceptionDemo.Main (ExceptionDemo.java:26)
위의 결과에서 다음을 볼 수 있습니다.
사용자 정의 예외 : 예외가 발생하면 작동을 계속할 수 없습니다.
사용자 정의 예외가 runtimeexception을 상속 받도록하십시오.
예외적으로 두 가지 유형이 있습니다.
1. 컴파일 중에 예외가 감지되었습니다.
2. 컴파일 중에 감지되지 않은 예외 (런타임 예외. runtimeexception 및 하위 클래스)
위의 기사는 Java의 예외 처리 메커니즘을 종합적으로 이해한다는 것은 내가 공유 한 모든 컨텐츠입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.