자바 던지기 : 예외 던지기
이 프로그램은 Throw 문을 사용하여 명확한 예외를 던질 수 있습니다. 일반적인 던지기 진술의 형태는 다음과 같습니다.
던지기 쉬움
여기서 ThrowableInstance는 Throwable 클래스 유형 또는 Throwable 서브 클래스 유형의 대상이어야합니다. int 또는 char와 같은 간단한 유형 및 문자열 또는 객체와 같은 비열성 클래스는 예외로 사용할 수 없습니다. 던질 수있는 객체를 얻는 두 가지 방법이 있습니다. 캐치 조항에서 매개 변수를 사용하거나 새 연산자와 함께 작성하십시오.
프로그램 실행은 던지기 직후에 중지됩니다. 가장 긴밀한 타이트 트라이 블록은 예외 유형과 일치하는 캐치 문이 포함되어 있는지 확인하는 데 사용됩니다. 일치하는 블록이 발견되면 제어가 명세서로 바뀝니다. 일치하는 캐치 블록이 없으면 기본 예외 핸들러는 프로그램의 실행을 방해하고 스택 추적을 인쇄합니다.
다음은 예외와 일치하는 핸들러를 생성하고 던지는 예제 프로그램입니다.
// strash.class trashdemo {static void demoproc () {trow nullpointerexception ( "demo") {syst em.out.println ( "demoproc 내부"); / / exception}} public static void main (string args []) {demoproc ()} catch (nullpointerexception e) {system.out.println ( "recau ght :" + e); 이 프로그램에는 동일한 오류를 처리 할 수있는 두 가지 기회가 있습니다. 먼저 Main ()은 예외 관계를 설정 한 다음 demoproc ()을 호출합니다. 그런 다음 demoproc () 메소드는 또 다른 예외 처리 관계를 설정하고 즉시 새로운 nullpointerexception 인스턴스를 던지고 다음 줄에 캡처됩니다. 그런 다음 예외가 다시 발생합니다. 출력 결과는 다음과 같습니다.
demoproc.recaught : java.lang.nullpointerexception : 데모
이 프로그램은 또한 Java에서 표준 예외 객체를 만드는 방법을 설명하여 다음 줄에 특별한주의를 기울입니다.
새 nullpointerexception을 던지십시오 ( "데모");
여기에서 New는 NullPointerException 인스턴스를 구성하는 데 사용됩니다. 모든 Java 내장 런타임 예외에는 두 개의 생성자가 있습니다. 하나는 매개 변수가없고 하나는 문자열 매개 변수가 있습니다. 두 번째 양식이 사용되면 매개 변수는 예외를 설명하는 문자열을 지정합니다. 객체가 print () 또는 println ()의 매개 변수로 사용되면 문자열이 표시됩니다. 이것은 getMessage ()를 호출하여 달성 할 수 있으며, 이는 Throwable에 의해 정의됩니다.
Java는 <br /> 조항을 제외하고 메소드가 예외를 일으킬 수 있지만 처리하지 않으면 메소드의 발신자가 예외없이 스스로를 보호 할 수 있도록이 동작을 지정해야합니다. 이렇게하려면 메소드 선언에 Throws 조항을 포함시킬 수 있습니다. Throws 절은 메소드가 던질 수있는 모든 예외 유형을 나열합니다. 이것은 오류 또는 runtimeexception 및 하위 클래스를 제외한 모든 유형의 예외에 필요합니다. 방법이 던질 수있는 다른 모든 유형의 예외는 Throws 조항에서 선언해야합니다. 그렇게하지 않으면 컴파일 오류가 발생합니다.
다음은 Throws 조항을 포함하는 메소드 선언의 일반적인 형태입니다.
type method-name (parameter-list)은 예외 목록을 던져 {// body of method}를 던집니다.여기에서 예외 목록은 메소드가 던질 수있는 쉼표로 분할 된 예외 목록입니다.
다음은 잘못된 예입니다. 이 예제는 잡을 수없는 예외를 던지려고합니다. 프로그램은 사실을 선언하기 위해 Throws 절을 지정하지 않기 때문에 프로그램은 컴파일되지 않습니다.
//이 프로그램은 오류가 포함되어 있지 않습니다 .class는 {static void strowone () {system.out.println ( "Desp guttatic void main (demo"); 문자열 args []) {strashone ()}; 프로그램을 컴파일하려면 두 곳을 변경해야합니다. 먼저 불법 행위 예외를 제기하려면 ThrowOne ()을 선언해야합니다. 둘째, Main ()은 예외를 포착하려면 시도/캐치 문을 정의해야합니다. 올바른 예는 다음과 같습니다.
// 이것은 이제 맞습니다. Class Throwsdemo {static void trashone ()는 불법 행위 {System.out.println ( "Inside ThrowOne."); ) {ThrowOne (); 예제의 출력 결과는 다음과 같습니다.
내부 ThrowoneCaught java.lang.ilegalaccessexception : 데모