[자바의 신] 14장 다 배운 것 같지만, 예외라는 중요한 것이 있어요

한지연·2023년 3월 26일
0

📚 try-catch

    public static void main(String[] args) {
        String[] strArr = new String[4];
        
        try {
        // ArrayIndexOutOfBoundsException 발생
            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);
    }
}
  • 예외 클래스를 확장하여 만듦
profile
배우고 활용하는 것을 즐기는 개발자, 한지연입니다!

0개의 댓글