① 예외처리란?
: 예외처리란 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것이다.
→ 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하도록 한다.
- 에러의 종류
→ 컴파일 에러 : 컴파일 시에 발생하는 에러 => 구문체크, 번역, 최적화, 생략된 코드 추가
런타임 에러 : 실행 시에 발생하는 에러 => 프로그램 종료
논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 => 프로그램 종료X
- 예외 클래스의 계층 구조
→ Exception클래스들 : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외.
RuntimeException클래스들 : 프로그래머의 실수로 발생하는 예외.
- 예외 처리하기 try-catch문
class JavaJungsuk_basic_Ex8_3 {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
try{ //예외가 발생할 가능성이 있는 문장들을 넣는다.
System.out.println(3);
System.out.println(0/0); //0으로 나눠서 고의로 ArithmethicException을 발생시킨다.
System.out.println(4); //실행되지 않는다.
} catch(Exception e) { //Exception이 발생했을 경우, 이를 처리하기 위한 문장을 적는다.
System.out.println(5);
}
System.out.println(6);
}
}
결과
1
2
3
5
6
→ 에러는 어쩔 수 없지만, 예외는 프로그래머가 이에 대한 처리를 미리해주어야 한다.
- printStackTrace()와 getMessage()
: 예외 클래스의 인스턴스에는 발생한 예외에 대한 정보가 담겨 있으며, getMessage()와 printStackTrace()를 통해서
이 정보들을 얻을 수 있다.
printStackTrace() | 예외발생 당시 호출스택에 있었던 메서드의 정보와 예외 메시지를 출력한다. |
getMessage() | 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다. |
class JavaJungsuk_basic_Ex8_5 {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
try {
System.out.println(3);
System.out.println(0/0);
System.out.println(4);
} catch (ArithmeticException ae) {
ae.printStackTrace();
System.out.println("예외메시지 : "+ae.getMessage());
}
System.out.println(6);
}
}
결과
1
2
3
java.lang.ArithmeticException: / by zero
at JavaJungsuk_basic_Ex8_5.main(JavaJungsuk_basic_Ex8_5.java:8) //printStackTrace()
예외메시지 : / by zero //ae.getMessage()
6
→ catch블럭의 괄호()에 선언된 참조변수를 통해 이 인스턴스에 접근할 수 있다.
→ try-catch문에 의해 프로그램은 정상적으로 종료되었다.
'프로그래밍 > Java' 카테고리의 다른 글
Java_java.lang패키지와 유용한 클래스(1)_Object클래스의 메서드 (0) | 2022.12.04 |
---|---|
Java_예외처리(2)_멀티 catch블럭, 예외 발생시키기, 체크드예외와 언체크드예외, 메서드에 예외 선언하기, finally블럭 (0) | 2022.11.30 |
Java_객체지향언어(9)_인터페이스 (0) | 2022.11.27 |
Java_객체지향언어(8)_추상 클래스, 추상 메서드 (0) | 2022.11.20 |
Java_객체지향언어(7)_instanceof연산자, 매개변수의 다형성, 객체배열 (0) | 2022.11.17 |