내장 예외 서브 클래스
표준 패키지 java.lang에서 Java는 여러 예외 클래스를 정의합니다. 이 중 일부는 이전 예에서 사용되었습니다. 이러한 예외는 일반적으로 표준 클래스 runtimeexception의 서브 클래스입니다. Java.lang은 실제로 모든 Java 프로그램에서 도입되므로 Runtimeexception에서 파생 된 대부분의 예외는 자동으로 제공됩니다. 또한 방법의 방법 목록에 포함될 필요가 없습니다. Java에서는 이것을 확인되지 않은 예외라고합니다. 컴파일러는 메소드가 이러한 예외를 처리하거나 던지는 지 확인하기 위해 확인하지 않기 때문입니다. java.lang에 정의 된 검사되지 않은 예외는 표 1에 나열되어 있습니다. 표 2는 Java.lang에 의해 정의 된 방법 목록에 포함되어야하는 예외를 나열합니다. 이러한 메소드가 예외 중 하나를 생성 할 수 있지만 스스로 처리 할 수없는 경우. 이를 확인한 예외라고합니다. Java는 다른 라이브러리 클래스와 관련된 몇 가지 다른 예외 유형을 정의합니다.
표 1 : 체크되지 않은 예외 서브 클래스는 Java.lang에서 정의 된 서브 클래스
표 2 : Java.Lang에 정의 된 예외 확인
Java를 사용하여 자신만의 예외 서브 클래스를 만듭니다
Java의 내장 예외 처리 가장 일반적인 오류를 처리하지만 적용하는 특수 케이스를 처리하기 위해 자신의 예외 유형을 구축 할 수 있습니다. 이것은 매우 간단합니다. 예외의 서브 클래스 만 정의하십시오 (예외는 물론 던지기 가능한 서브 클래스입니다). 서브 클래스는 실제로 아무것도 수행 할 필요가 없습니다. 유형 시스템에서의 존재를 사용하면 예외로 사용할 수 있습니다.
예외 클래스 자체는 어떠한 메소드도 정의하지 않습니다. 물론, 그것은 던질 수있는 방법 중 일부를 상속합니다. 따라서, 당신이 만든 것들을 포함한 모든 예외는 던질 수있는 정의 방법을 얻을 수 있습니다. 이러한 방법은 표 3에 나와 있습니다. 생성 한 예외 클래스에서 이러한 방법 중 하나 이상을 무시할 수도 있습니다.
표 3 던지기 가능에 의해 정의 된 방법
다음 예제는 예외의 새로운 서브 클래스를 선언 한 다음 메소드의 오류에 대한 신호로 사용됩니다. toString () 메소드를 과부하 시키므로 예외 설명을 println ()로 표시 할 수 있습니다.
//이 프로그램은 Class Exceptions Exception {int a) {report ing toString () {return "myException [" + detail + "]; } Class ExceptionDemo {static void compute (int a)는 myException {system.out.println ( "compute (" + a + ")"); .println ( "정상 종료"); e);}}
이 예제는 예외 MyException의 서브 클래스를 정의합니다. 이 서브 클래스는 매우 간단합니다. 생성자와 오버로드 된 toString () 메소드 만 포함하여 이상치를 표시합니다. ExceptionDemo 클래스는 compute () 메소드를 정의합니다. 이 메소드는 MyException 객체를 던집니다. 이 예외는 compute ()의 정수 매개 변수가 10보다 큰 경우에 제기됩니다.
Main () 메소드는 MyException에 대한 예외 핸들러를 설정 한 다음 법적 값과 불법 값으로 compute ()을 호출하여 코드를 통해 다른 실행 경로를 표시합니다. 결과는 다음과 같습니다.
Compute (1) Normal ExitCalled Compute (20)가 MyException [20]을 잡았습니다.