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 |
댓글