
비교 차트
비교의 기초 | 던지다 | 던지다 |
---|---|---|
기본 | throw 키워드는 생성 된 예외 객체를 JVM에 수동으로 전달합니다. | throws 키워드는 예외 처리의 책임을 메서드 호출자에게 위임하는 데 사용됩니다. |
통사론 | throw Throwable-instance; | return_type method_name (매개 변수 목록) ExceptionClass_list를 throw합니다. { // 메소드 본문 } |
뒤따라 | throw 키워드 다음에 예외 객체가옵니다. | throws 키워드 다음에는 메소드에서 발생할 수있는 예외 클래스 목록이옵니다. |
throw 된 예외 수 | throw 키워드는 단일 예외 인스턴스를 throw 할 수 있습니다. | throws 키워드는 여러 예외 클래스를 쉼표로 구분하여 선언 할 수 있습니다. |
던짐의 정의
키워드 " throw "는 생성 된 예외 인스턴스를 JVM (Java Virtual Machine)에 수동으로 넘기는 데 사용됩니다. 예외 인스턴스를 throw하는 데 "throw"를 사용하지 않고 예외가 발생하면 런타임 시스템에서 내부적으로 예외 인스턴스를 JVM에 던지고 프로그램이 비정상적으로 종료됩니다. throw 키워드의 일반적인 형식은 다음과 같습니다.
Throwable_instance를 던지십시오.
Throwable_instance 위는 Throwable 클래스의 객체 여야합니다. int, float 또는 char과 같은 기본 유형과 throw 가능하지 않은 클래스 인스턴스는 throw 키워드를 사용하여 Throw 할 수 없습니다.
키워드 throw를 이해하는 예제를 보겠습니다.
클래스 테스트 {public static void main (String [] args) {throw new ArithmeticException ( "/ 제로에 의해"); }}
위의 코드에서 throw 키워드는 Exception 클래스 "ArithmeticException"의 인스턴스를 throw합니다. throw 키워드가 사용되지 않았다면, main () 메소드는 내부적으로 JVM에 전달 된 예외 객체를 내부적으로 생성했을 것이다.
키워드 던지기에 관하여 기억할 점 :
- 예외 오브젝트를 수동으로 JVM에 전달합니다.
- 사용자 정의 예외 또는 사용자 정의 예외에 가장 잘 사용됩니다.
- 메모리가 throw 키워드에 의해 던져진 예외 객체에 할당되지 않으면 런타임 예외 NullPointerException이 발생합니다.
- throw 키워드는 발생 직후에 프로그램의 실행을 중지합니다. 우리는 throw 문 다음에 어떤 명령문도 직접 작성할 수 없습니다. throw 문 다음에 스테이먼트를 직접 작성하면 컴파일러는 컴파일 중 오류가 발생하여 연결할 수없는 문을 표시합니다.
- throw 키워드를 사용하여 Throwable 클래스의 객체 만 throw 할 수 있습니다. Throwable 객체가 Throwable 클래스의 객체가 아닌 경우 컴파일 타임 오류 "Incompatible type found. . 필요한 java.lang.Throwable "
노트 :
throw 키워드는 C ++, JAVA, C #에서 수동으로 예외를 throw하는 데 사용됩니다.
던지기의 정의
" throws "키워드는 메서드에서 발생한 예외 처리 책임을 호출자 메서드에 위임하는 데 사용됩니다. 호출자 메서드는 다른 메서드 또는 JVM 일 수있는 예외 처리를 담당합니다. 메서드에서 발생할 수있는 예외 클래스 목록을 선언합니다.
throws 키워드를 사용하면 메서드에서 발생한 예외가 호출자 메서드에 의해 처리되므로 컴파일 오류가 발생하지 않는다는 것을 컴파일러에서 알 수 있습니다. 그러나 호출자 메서드는 예외를 처리하거나 계층 구조 메서드에 예외를 처리 할 책임을 위임해야합니다. 런타임 예외가 발생하면 throws 키워드를 사용한 후에도 프로그램의 비정상적인 종료를 막지 못합니다. 호출 메소드가 main () 인 경우, 디폴트로 JVM이 예외를 처리합니다.
throws 키워드의 일반적인 형식은 다음과 같습니다.
return_type method_name (매개 변수 목록) throws exceptionClass_list {// 본문 본문}
throws 키워드는 메소드의 서명 뒤에 나타나며 메소드에 발생할 수있는 예외 클래스 목록을 포함 할 수 있습니다. 키워드 throw 후에 작성된 예외 클래스 목록은 쉼표로 구분됩니다.
throws 키워드를 이해하는 한 가지 예를 들어 보겠습니다.
calss 테스트 {public static void main (String [] args) throws InterruptedException {thread sleep (10000); }}
위 코드에서 sleep () 메서드를 사용하여 주 스레드를 잠자기 상태로 만듭니다. 이제 주 방법이 절전 상태 일 때 다른 스레드가 주 스레드를 인터럽트 할 수 있습니다. 그러나 throws 키워드는 main () 메서드의 서명 이후에 사용되므로 프로그램이 쉽게 컴파일됩니다. throws 키워드는 확인 된 예외 클래스 인 InterruptedException을 선언합니다. 이제 다른 스레드가 런타임 중에 주 스레드를 인터럽트하면 throws 키워드는 JVM 인 main () 메서드의 호출자에게 해당 예외를 넘겨줍니다. JVM은 프로그램을 비정상적으로 종료시킵니다.
기억할 포인트는 다음과 같습니다.
- throws 키워드는 확인 된 예외 클래스를 선언하는 데에만 사용됩니다. 검사되지 않은 예외에 대한 throws 키워드의 사용은 아무런 영향을 미치지 않습니다.
- 메서드가 독자적으로 예외를 처리하고 싶지 않은 경우, throws 키워드를 사용하여 해당 예외를 해당 클래스의 호출자 메서드에 위임합니다.
- 그 사용법은 프로그램의 원활한 컴파일 만 허용합니다.
- 런타임에 예외가 발생하면 throws 키워드를 사용한 후에도 프로그램이 비정상적으로 종료됩니다.
- 런타임시 예외가 발생하면 프로그램의 정상 종료를 위해 try / catch 블록을 사용하는 것이 좋습니다.
노트 :
키워드 throw는 Java에서만 사용됩니다. C ++과 C #은 throws 키워드를 사용하지 않습니다.
던지기와 던지기의 주요 차이점
- 키워드 throw는 예외 처리의 책임을 수동으로 JVM에 넘겨주는 반면, 키워드는 예외가 발생한 코드의 호출자 메소드에 예외 처리의 책임을 전가합니다.
- throw 키워드 뒤에는 JVM으로 넘겨주는 예외 객체가옵니다. 한편, throws 키워드 뒤에는 메소드에서 발생할 수있는 예외 클래스가옵니다.
- throw 키워드는 한 번에 하나의 예외 객체를 던질 수 있지만 throws 키워드는 한 번에 쉼표로 구분 된 여러 예외 클래스를 선언 할 수 있습니다.
결론:
throw 키워드는 사용자 정의 된 예외에 가장 잘 사용됩니다. try / catch 블록은 comparison throw 키워드로 예외를 처리하는 데 가장 좋습니다.