본문 바로가기

언어공부/Java

자바 예외 처리 방법 - throw 키워드, throws 키워드, 사용자 정의 예외

자바 예외 처리 방법인 throw 키워드, throws 키워드에 대해서 알아보자.

throw 키워드

불필요한 데이터 전송이 있어 잘 안쓰이는 키워드로, 예외를 일부러 발생시킬 때 사용하는 키워드이다.

형식은 throw new 예외 클래스 생성자; 이다.

 

throws 키워드

throws 키워드는 발생된 예외를 자신이 직접 처리하는 것이 아니라 자신을 호출한 곳으로 떠넘기는 역할을 한다.

형식은 접근제어자 리턴타입 메소드명(매개변수) throws Exception1, Exception2, ... { } 이다.

 

예외를 선언하면, 이 예외뿐만 아니라 그 자손타입의 예외까지도 발생할 수 있다. 메소드의 선언부에 예외를 선언함으로써 메소드를 사용하려는 사람이 메소드의 선언부를 보았을 때, 이 메소드를 사용하기 위해서는 어떠한 예외들이 처리되어져야 하는지 쉽게 알 수 있다.

 

사용자 정의 예외

기존의 정의된 예외 클래스 외에 필요에 따라 프로그래머가 새로운 예외 클래스를 정의하여 사용할 수 있다. 보통 Exception클래스 또는 RuntimeException클래스로부터 상속받는 클래스를 만들지만, 필요에 따라 예외 클래스를 선택할 수 있다.

 


ex)

 

메인메소드에서 예외발생전을 출력하고, 정적 메소드 p(0)을 호출한다. p(0)은 if문 조건에 해당되므로 throw new NullPointerException();가 실행되어 인위적 예외가 발생되고, 해당 예외는 p(int a) throws NullpointerException이기

때문에 메소드를 호출한 곳(메인 메소드)으로 예외를 떠넘긴다.

 

해당 메인메소드는 catch(NullpointerException e)에서 catch문 문장인 예외를 받아 예외 처리함을 출력하게 된다.

 

출력화면

 

ex)

 

메인메소드 try문에서 if문 조건에 해당되므로 throw new UserEx07("양수가 아닙니다.");로 인위적으로 예외를 발생시킨다. UserEx07은 사용자 정의 예외클래스로, 생성자 오버로딩으로 "양수가 아닙니다"를 super(str)로 슈퍼클래스인 Exception의 생성자에게 넘겨 슈퍼클래스 오버로딩 된 생성자를 호출한다.

 

catch문에서 UserEx07 예외클래스타입 참조변수를 받아 에러 메시지인 "양수가 아닙니다."를 출력하게 한다.

 

출력화면

 

ex) 예외 되던지기

 

출력화면