에러 - 자바 환경에서 문제가 생긴 것.
예외 - 내가 짠 코드가 내가 의도한 것과 다른 상황에 직면한 것.
try catch문으로 예외처리를 해주면 프로그램이 멈추지 않고 매끄럽게 진행을 할 수 있습니다.
try를 쪼개는 건 개발자 마음이지만,
try안에서 하나라도 에러가 발생하면 try안에 있지만 에러 코드 아래에 있는 코드들은 실행될 기회가 없습니다.
public class ExceptionApp {
public static void main(String[] args) {
System.out.println(1);
try {
System.out.println(2 / 0);
} catch(ArithmeticException e) {
System.out.println("잘못된 계산이네요.");
}
System.out.println(3);
}
}
모든 에러의 타입형 Exception
도 설정 가능합니다.
e.getMessage()
에러 메시지 보기
e.printStackTrace()
에러 보여주기
checked exception - 컴퓨터가 예외처리 했는지 체크하여 컴파일조차 못하게 함. IOException
unChecked exception - 컴퓨터가 체크하지 않음. RuntimeException
에러가 나도 처리되어야 하는 것들을 넣어줍니다.
자원 문제 예외처리할 때 코드가 길어지는 것을 방지하기 위해 자바7부터 지원합니다.
autoclosable 인터페이스를 가지고 있는 클래스가 사용 가능합니다.
import java.io.FileWriter;
import java.io.IOException;
public class TryWithResources {
public static void main(String[] args) {
try(FileWriter f = new FileWriter("data.txt")) {
f.write("hello");
} catch(IOException e) {
e.printStackTrace();
}
}
}