error (에러) 어쩔 수 없는 것
exceptio (예외) 해결할 수 있는 것
예외가 의심되는 코드를 try...catch 구문으로 격리시키기
public class ExceptionApp{
public static void main(String[] args){
System.out.println(1);
int[] scores = {10,20,30};
try{
System.out.println(scores[3]);
} catch(ArrayIndexOutOfBoundsException e){
System.out.println("없는 값을 찾고 계시네요");
}
try{
System.out.println(2/0);
} catch(ArithmeticException e){
System.out.println("잘못된 계산인요");
}
System.out.println(3);
}
}
예외 처리하기 귀찮을 때 쓸 수 있는 방법 (좋은 방법은 아님)
catch(Exception e){
System.out.println("뭔가 이상합니다. 오류가 발생했습니다.");
}
부모 exception은 자식 exception들을 포괄한다
catch문을 어디에 넣냐에 따라서 우선순위가 달라진다
: 왜때문에 생긴 문제인지 알려준다.
: exception이 발생했을때 나타나는 빨간색 에러 메세지도 띄워준다.
public class ExceptionApp{
public static void main(String[] args){
System.out.println(1);
int[] scores = {10,20,30};
try{
System.out.println(2);
//System.out.println(scores[3]);
System.out.println(3);
System.out.println(2/0);
System.out.println(4);
} catch(ArithmeticException e){
System.out.println("계산이 잘못된 것 같아요."+e.getMessage())
e.printStackTrace();
} catch(Exception e){
System.out.println("뭔가 이상합니다. 오류가 발생했습니다.");
}
System.out.println(5);
}
}
참고)
로깅시스템: 에러메세지를 내부적으로 관리자들만 볼 수 있는 형태로 감춰주는 툴
checked exception
: exception에서 unchecked exception 을 제외한 나머지 (예, IOException)
unchecked exception
: runtime exception을 포함한 자식 예외들
checked 는 반드시 예외처리를 해야 컴파일 실행 가능
unchecked 는 일단 실행이 가능하고 콘솔에서 예외 발생 시 표시를 해준다.
public class CheckedExceptionApp{
public static void main(String[] args){
try{
FileWriter f = new FileWriter(fileName:"data.txt");
f.write(str:"Hello");
f.close();
}catch(IOException e){
e.printStackTrace();
}
}
}