I about me

[Final] Exception 본문

Java

[Final] Exception

ssungni 2024. 6. 11. 16:59

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%ACException-%EB%AC%B8%EB%B2%95-%EC%9D%91%EC%9A%A9-%EC%A0%95%EB%A6%AC

 

☕ 자바 예외 처리(try catch) 문법 & 응용 정리

예외(Exception) 처리하기 예외 처리(exception handling) 이란, 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는것이다. 자바의 코드를 예외 처리를 한다고 해서 프

inpa.tistory.com

 

  • "오류"를 체계적으로 처리하는 방법 
    • 어디서 발생하는가?
      • 읽기를 위해 열리는 파일이 없는 경우
      • 0으로 나눌 때
      • 배열

이제 이 친구들을 각각 예외처리 class를 만들어서 처리해줄거야

ex 1) IO 예외처리

import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;

public class IOExceptionExample {
    public static void main(String[] args) {
        try {
            File file = new File("example.txt");
            FileReader fr = new FileReader(file);
            // 파일 읽기 작업 수행
            fr.close();
        } catch (FileNotFoundException e) {
            System.out.println("파일을 찾을 수 없습니다: " + e.getMessage());
        } catch (IOException e) {
            System.out.println("입출력 예외 발생: " + e.getMessage());
        }
    }
}

ex 2) NullPoint

public class NullPointerExceptionExample {
    public static void main(String[] args) {
        String str = null;
        try {
            int length = str.length();
        } catch (NullPointerException e) {
            System.out.println("널 포인터 예외 발생: " + e.getMessage());
        }
    }
}

  • Throwing your own exception
  • Some errors can be checked by the compiler
    // 즉, 몇몇 에러는 체크해줘야돼
       ex) 파일 열기 이런거 try 해가지고 열리는지 안 열리는지
  • Run time exceptions won't be checked
    // 즉, 따로 설정 하지 않아도 알아서 error 끄긴 하여 체크라지 않아도 된다.
      ex) 0 나누기, 배열 인덱스 오류
  • Different exception classes in java
    // 서로 다른 예외처리 기법들이 있다.
   
Throwable https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%98%88%EC%99%B8-%EB%8D%98%EC%A7%80%EA%B8%B0throw-%EC%98%88%EC%99%B8-%EC%97%B0%EA%B2%B0Chained-Exception
Exception Checked Exception - IOException
- SQLException
Unchecked Exception
(RuntimeException)
- NullPointerException
- ArrayIndexOutOfBoundsException
- ArithmeticException
Error - OutOfMemoryError
- StackOverflowError

  • Using finally
    • 여기서 sample.shouldBeRun()는 절대로 실행될 수 없다. 왜냐하면 4/0에 의해 ArithmeticException이 발생하여 catch 구문으로 넘어가기 때문이다.
    • 만약 sample.shouldBeRun() 메서드가 반드시 실행되어야 한다면 이런 경우를 처리하기 위해 자바에서는 다음과 같이 finally 문을 사용한다.

  • Handling multiple exceptions
    • ① Separate by a comma
      쉼표가 아닌 | (파이프) 기호로 구분
      위의 코드에서는 IOException이나 SQLException 중 어느 것이 발생하든 동일한 catch 블록에서 처리됨
      try {
          // 예외가 발생할 가능성이 있는 코드
      } catch (IOException | SQLException | ClassNotFoundException ex) {
          // 세 가지 예외를 동일하게 처리
          ex.printStackTrace();
      }
    • ② Multiple catch blocks
      여러 개의 catch 블록을 사용할 수 있음
      try {
          // 예외가 발생할 가능성이 있는 코드
      } catch (IOException ex) {
          // IOException을 처리
          ex.printStackTrace();
      } catch (SQLException ex) {
          // SQLException을 처리
          ex.printStackTrace();
      } catch (ClassNotFoundException ex) {
          // ClassNotFoundException을 처리
          ex.printStackTrace();
      }

'Java' 카테고리의 다른 글

[Final] File I/O  (0) 2024.06.13
[Final] Exception Handling 문제 풀이  (0) 2024.06.11
[Final] Interface  (0) 2024.06.10
[Final] Abstract Classes  (0) 2024.05.07
[MidTerm] 1. Java Elements  (0) 2024.04.22