본문 바로가기
Language/JAVA

JAVA :: 자바 문법 정리(12)

by stern07s 2023. 5. 1.
728x90
반응형

JAVA :: 자바 문법 정리(12)

printStackTrace()와 getMessage()


예외가 발생했을 때 생성되는 예외 클래스의 인스턴스에는 발생한 예외에 대한 정보가 담겨져 있으며, getMessage()와
printStackTrace()를 통해서 이 정보들을 얻을 수 있다.


✔️printStackTrace() - 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다.
✔️getMessage() - 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.


printStackTrace(PrintStream s) 또는 printStackTrace(PrintWriter s)를 사용하면 발생한 예외에 대한 정보를 파일에 저장할 수도 있다.

 

멀티 catch 블럭

JDK 1.7 부터 여러 catch 블럭을 ‘|’ 기호를 이용해서, 하나의 catch 블럭으로 합칠 수 있게되었으며, 이를 ‘멀티 catch 블럭’이라 한다. (멀티 catch 블럭에 사용되는 ‘|’는 논리 연산자가 아니라 기호이다.)


만일 멀티 catch 블럭의 ‘|’ 기호로 연결된 예외 클래스가 조상과 자손의 관계에 있다면 컴파일 에러가 발생한다. (그냥 조상 클래스만 써주는 것과 똑같기 때문이다.)

 

예외 발생시키기

키워드 throw 를 사용해서 프로그래머가 고의로 예외를 발생시킬 수 있다.


✔️ 먼저, 연산자 new 를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음
✔️ 키워드 throw 를 이용해서 예외를 발생시킨다.


Exception 인스턴스를 생성할 때, 생성자에 String 을 넣어 주면, 이 String 이 Exception 인스턴스에 메시지로 저장된다. 이 메시지는 getMessage()를 이용해서 얻을 수 있다.


RuntimeException 을 발생시키는 코드는 이에 대한 예외 처리를 하지 않았음에도 불구하고 성공적으로 컴파일 된다. 


RuntimeException 클래스들과 그 자손 클래스에 해당하는 예외는 프로그래머가 실수로 발생하는 것들이기 때문에 예외처리를 강제하지 않는 것이다.


컴파일러가 예외처리를 확인하지 않는 RuntimeException 클래스들은 unchecked 예외라고 부르고, 예외처리를 확인하는 Exception 클래스들은 checked 예외라고 부른다.


Error 와 그 자손도 unchecked 예외이다. try-catch 블럭으로 처리할 수 없기 때문이다.

반응형

'Language > JAVA' 카테고리의 다른 글

JAVA :: 자바 문법 정리(13)  (0) 2023.05.02
JAVA :: 자바 문법 정리(11)  (0) 2023.04.30
JAVA :: 자바 문법 정리(10)  (0) 2023.04.29
JAVA :: 자바 문법 정리(9)  (0) 2023.04.28
JAVA :: 자바 문법 정리(8)  (0) 2023.04.27

댓글