📚 try-catch
public static void main(String[] args) {
String[] strArr = new String[4];
try {
System.out.println(strArr[4]);
}catch (Exception e){
e.printStackTrace();
}finally {
System.out.println("finally는 무조건 실행이 됩니다.");
}
}
- try 뒤에 중괄호로 예외가 발생하는 문장들을 묶어주고, catch 괄호 안에 예외가 발생했을 때 처리
- try 블록 안에서 예외가 발생되면 그 이하의 문장은 실행되지 않고 catch 블록으로 넘어감
- catch 문장에서 사용할 변수에 대해서는 try 앞에 미리 선언해 놓아야 함
- 예외가 발생하여 catch 블록이 실행 된다고 해서 try 블록 내에서 실행된 모든 문장이 무시되는 것은 아님
- finally 블록은 예외 발생 여부와 상관없이 실행, 코드의 중복을 피하기 위해서 반드시 필요
- catch는 한 개 이상 사용할 수 있지만 블록 순서가 매우 중요하고 Exception 클래스로 catch 하는 것을 가장 아래에 추가할 것을 권장
📚 예외
1️⃣ checked exception
- error와 unchecked exception을 제외한 모든 예외
2️⃣ error
- 자바 프로그램 밖에서 발생한 예외
ex: 서버 디스크 고장, 메인보드 문제
3️⃣ runtime exception
- 예외가 발생할 것을 미리 감지하지 못했을 때 발생
- 컴파일 때 체크하지 않기 때문에 uncheckd excetion이라고 부름
📝 Throws와 Throw
public static void main(String[] args) throws Exception{
String a = "sunday";
try {
if(a.equals("sunday")){
throw new Exception("monday is coming ");
}
}catch (Exception e){
e.printStackTrace();
}
}
throw
- 필요에 의해 try 블록 내에서 throw라고 명시한 후 개발자가 예외 클래스 객체를 생성
throws
- 해당하는 예외가 없다면 발생된 예외는 클래스 밖이나 메소드 밖으로 던져버림
- 선언해놓으면 호출한 쪽에 예외 처리를 위임하는 것이기 때문에 문제가 되지 않음
📝 직접 예외 만들기
public class CustomException extends Exception {
public CustomException() {
super();
}
public CustomException(String message) {
super(message);
}
}