코딩을 하다 보면 자신만의 예외 상황을 만들고 처리해야 하는 경우가 있는데, 예외를 만들 떄는 throw 구문을 사용합니다.
package exceptiontest.exceptioncreate;
class MyException extends Exception{
int x;
MyException(int x){
this.x = x;
}
public String toString(){
return " I am " + x + "in MyException class";
}
}
public class Test1 {
public static void main(String[] args){
MyException me = new MyException(10);
try{
System.out.println("before thow MyException");
throw me; //예외 발생
}catch(MyException e){
System.out.println(e);
}
System.out.println("main ends");
}
}
before thow MyException
I am 10in MyException class
main ends
MyException 클래스는 Exception 클래스를 상속받고 있는데, 이렇게 하면 MyException 객체는 예외 객체가 되며, 이 객체를 throw 키워드를 이용해서 예욀르 발생시키도록 하는것, 그리고 throw me; 와 같이 예외를 발생시킨 부분을 try~catch를 이용하여 예외를 처리하도록 해야함
(예외 클래스를 상속받은 객체를 (throw 인스턴스) 로 예외 발생처리 함)
잘못 적은 문법 떄문에 발생하는 컴파일 에러는 반드시 코드 자체를 수정해야 하지만 프로그램이 수행되는 과정에는 어쩔 수 없이 발생하는 에러는 예외로 특별처리 해야한다. 이러한 예외 처리 방법으로는 try~catch 만을 이용하는 방법과 throw를 이용하여 예외 처리를 다른 메소드에게 넘기는 방법이있다.
| 예외명 | 의미 |
|---|---|
| ArrayIndexOutOfBoundsException | 배열 범위를 벗어남 |
| ArithmeticException | 연산에 문제가있음(ex 0으로 나누기) |
| FileNotFoundException | 존재하지 않는 파일에 접근하기 |
| NullPointerException | 인스턴스를 제대로 생성하지 않음 |
| ClassNotFoundException | 존재하지 않는 클래스 |
| NumberFormatException | 문자열ㅇ르 수치로 전환할 때 발생 |