자바(Java)에서 예외(Exception)를 다루는 간단한 예제
(1)발생한 예외 핸들링하기
try-catch문을 사용하여 try 블럭에서 발생한 예외를 처리할 수 있다.
예제는 0으로 나누기 때문에 예외가 발생한다.
MyClass.java
public class MyClass {
public static void main(String[] args) {
System.out.println("Start");
try {
int a = 100/0;
} catch(ArithmeticException e) {
System.out.println(e.getMessage());
}
System.out.println("End");
}
}
실행결과
발생한 에러의 내용을 출력하고 정상 종료한 것을 알 수 있다.
(2)예외 발생시키기
throw를 이용해서 사용자가 예외를 발생시킬 수 있다. 예제에서는 입력값이 0과 100사이를 벗어났을 때 예외를 발생시키고 있다. 또한 예제에서는 발생한 예외를 자신이 처리하지 않고 호출한 메서드로 전달하기 위해 메서드 정의시 "throws 전달할 예외"를 사용하였다.
MyClass.java
public class MyClass {
public static void doSomething(int score) throws Exception {
if(score < 0 || score > 100) {
throw new Exception("score값이 범위(0 <= x <= 100)를 초과하였습니다.");
}
}
public static void main(String[] args) {
System.out.println("Start");
try {
doSomething(-20);
} catch(Exception e) {
System.out.println(e.getMessage());
}
System.out.println("End");
}
}
실행결과
Start
score값이 범위(0 <= x <= 100)를 초과하였습니다.
End
throw한 예외가 main()에서 핸들링된 것을 알 수 있다.
(3)사용자 정의 예외 클래스
Excepion클래스를 상속하면 예외 클래스를 정리할 수 있다.
바로 위의 예제를 사용자 정의 예외 클래스로 구현하였다.
MyClass.java
class MyException extends Exception {
public MyException(String msg) {
super(msg);
}
}
public class MyClass {
public static void doSomething(int score) throws MyException {
if(score < 0 || score > 100) {
throw new MyException("score값이 범위(0 <= x <= 100)를 초과하였습니다.");
}
}
public static void main(String[] args) {
System.out.println("Start");
try {
doSomething(-20);
} catch(MyException e) {
System.out.println(e.getMessage());
}
System.out.println("End");
}
}
Exception클래스를 상속해서 사용자 정의 예외 클래스(MyException)을 정의한 후, 사용자 정의 예외 클래스를 사용하여 예외를 발생시키고 있다. 구현 방법 말고는 위의 예제와 같다.
실행결과
Start
score값이 범위(0 <= x <= 100)를 초과하였습니다.
End
결과 역시 동일하다.