모든 Java 코드는 다음과 같은 예외를 제외 할 수 있습니다. 그것이 누구라도 Java 던지기 진술을 통해 예외를 던질 수 있습니다. 방법에서 던져진 예외는 Throws 절과 함께 사용해야합니다.
1. 던지기 예외를 던집니다
메소드에 예외가있을 수 있지만 그러한 예외를 처리 할 수있는 기능이없는 경우, THROWS 절을 사용하여 메소드 선언에서 THROWN 예외를 선언 할 수 있습니다. 예를 들어, 달리면 자동차가 실패 할 수 있으며 자동차 자체 가이 실패를 처리 할 수 없으므로 운전자가 처리 할 수 없습니다.
Throws 문은 메소드가 정의 될 때 던지기위한 예외 유형을 선언하는 데 사용됩니다. 쉼표를 사용하여 여러 예외를 분할 할 수 있습니다. Throws 문의 구문 형식은 다음과 같습니다.
MethodName은 Exception1, Exception2, .., Exceptionn을 던집니다
{{
}
메소드 이름 Exception1, Exception2,…, Exception 이후에 던질 예외는 목록입니다. 메소드가 예외 예외 목록을 던지면 메소드는 이러한 유형 및 하위 클래스 유형의 예외를 처리하지 않지만 메소드를 호출하는 메소드에 던져지고 처리됩니다. 예를 들어:
java.lang.exception {static void pop ()는 무도회에 {// 부정적인 int void main을 생성합니다 (string [] args) {// 메인 메소드 시도 {// 문자 예외 정보 pop (); 예외 "); // 출력 예외 정보}}}
Throws 키워드를 사용하여 발신자에게 예외를 던지면 발신자가 예외를 처리하지 않으려면 계속해서 던질 수 있지만 결국 예외를 처리 할 수있는 발신자가 있어야합니다.
POP 메소드는 예외는 NegativeArraysizeexception을 처리하지 않지만 기본 기능에 의해 처리됩니다.
예외를 던지기위한 던지기 규칙 :
1) 확인되지 않은 예외, 즉 오류, runtimeexception 또는 하위 클래스 인 경우, Throws 키워드를 사용하지 않고 제외 할 예외를 선언 할 수 있으며 컴파일은 여전히 원활하게 전달되지만 시스템에서 시스템에서 실행됩니다. 런타임.
2) 방법으로 던질 수있는 확인 된 예외는 선언되어야합니다. 즉, 메소드에 점검 가능한 예외가있을 수있는 경우, 트리 캐치 문으로 잡히거나 Throws 조항으로 선언하면 컴파일 오류가 발생합니다.
3) 예외가 발생하는 경우에만 방법의 발신자는 예외를 처리하거나 다시 던져야합니다. 메소드 발신자가 예외를 처리 할 수 없으면 전체를 삼키지 않고 계속 던져야합니다.
4) 호출 방법은 확인 가능한 예외 처리 및 선언 규칙을 따라야합니다. 메소드를 덮어 쓰기하면 덮어 쓰기 메소드와 다른 예외를 선언 할 수 없습니다. 선언 된 예외는 재정의 메소드에 의해 선언 된 예외의 유사하거나 서브 클래스 여야합니다.
예를 들어:
방법에서 예외가 발생할 수 있다고 결정하는 기초는 다음과 같습니다.
1)이 방법에는 던지기 진술이 있습니다. 예를 들어, 위 메소드 7 () 메소드의 캐치 코드 블록에는 던지는 문이 있습니다.
2) 다른 방법은 호출되고 다른 방법은 Throws 절을 사용하여 예외를 선언합니다. 예를 들어, Method3 () 메소드는 Method1 () 메소드를 호출하고 Method1 () 메소드는 IOException이 재투를 겪으므로 Method3 () 메소드에서 IOException이 발생할 수 있습니다.
2. 던지기를 사용하여 예외를 제외하십시오
던지기는 항상 기능 본문에 나타나고 Throwable 유형을 제외하고 사용됩니다. 이 프로그램은 던지기 직후에 종료됩니다. 진술은 실행 될 수 없으며, 그 다음으로 포함 된 모든 시도 블록 (아마도 상위 수준의 호출 함수)에서 Catch 절을 포함하는 시도 블록을 찾습니다. 내부.
예외는 예외 클래스의 인스턴스 객체라는 것을 알고 있으며, Throw 문을 통해 던질 예외 클래스의 인스턴스 객체를 만들 수 있습니다. 이 진술의 구문 형식은 다음과 같습니다.
새로운 예외 이름을 던지십시오.
예를 들어, ioException 클래스의 예외 객체를 던지십시오.
새로운 ioexception을 던지십시오.
클래스 던지기 가능 또는 서브 클래스를 던질 수있는 인스턴스 객체 만 던지는 경우에 주목해야합니다. 다음 작업이 잘못되었습니다.
새 문자열을 던지십시오 ( "예외");
문자열은 던질 수있는 클래스의 서브 클래스가 아니기 때문입니다.
확인 예외가 발생하면 메소드가 메소드 헤더에 던져 질 수있는 예외 유형을 선언해야합니다. 이 방법의 발신자는 또한 던진 예외를 처리하는지 확인해야합니다.
모든 메소드가 획득 한 예외 계층을 레이어별로 던지면 JVM은 결국 처리하고 처리는 매우 간단하여 예외 메시지 및 스택 정보를 인쇄하는 것입니다. 오류 또는 runtimeexception이 발생하면 메소드의 발신자는 예외를 처리 할 수있는 옵션이 있습니다.
패키지 테스트; import jav.lang.exception {static int quotient (int x, int y)는 myexception {// (y <0)를 던지는 방법을 정의합니다. 0 새로운 MyException (Divisor는 음수가 될 수 없습니다 "); int b = 0; // try 문은 int result (a, b)를 포함합니다. .out.println (e. getMessage ()); // arithmeticexception exception exception.out.println (divisor는 0이 될 수 없음); CATCH (e on e) {// 기타 예외를 처리합니다. out.println ( "프로그램에서 다른 예외가 발생했습니다"); 문자열 메시지; // 정의 변수 공개 내 예외 (string errormessagr) {public string getMessage () {// getMessage () 메소드 return}};