예외처리(Exception Hnadling)

서린·2024년 7월 24일
0

에러(Error)와 예외(Exception)

  • 에러(Error)
    소스코드에 의해서 수습될 수 없는 심각한 오류
  • 예외(Exception)
    소스코드에 의해서 수습될 수 있는 다소 미약한 오류

예외처리(Exception Handling)이란?

  • 코드 실행 중에 발생하는 예외나 오류가 원인으로 전체 시스템의 비정상 동작을 방지하는 기술
  • 예외가 주로 발생하는 원인은 아래와 같다.
    • 처리 로직이 잘못 작성된 경우
    • 산술 연산이 잘못된 경우
    • 잘못된 데이터가 입력 된 경우
    • 하드웨어 및 소프트웨어의 오작동의 경우
    • 시스템 및 네트워크의 과부하 등의 경우

Java 예외처리 인터페이스 및 클래스

try, catch, finally

  • 예외처리를 위한 문법
  • 각 블록은 아래와 같은 기능을 담당
    • try
      예외가 발생할 가능성이 있는 처리를 작성
      예외처리를 좀 더 세세하게 처리하고 싶을 경우 catch 블럭을 여러개 작성 가능
    • catch
      발생한 예외의 처리를 작성
    • finally
      예외 발생 여부와 상관없이 가장 마지막에 항상 실행되는 처리 작성
package Java;

public class HelloJava {
    public static void main(String[] args) {
        try {
            System.out.println("Try block");
            
            double result = 10 / 0; // 예외가 발생하는 처리
        } catch (Exception e) {
            System.out.println("Catch block");
            System.out.println(e.getMessage()); // 예외 메세지 출력
        } finally {
            System.out.println("Finally block");
        }
    }
}

// --------------------
// 예외처리를 좀더 세세하게 하고 싶은 경우
package Java;

public class HelloJava {
    public static void main(String[] args) {
        try {
            System.out.println("Try block");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("실행 매개값의 수가 부족 또는 숫자로 변환 불가"); // 예외 메세지 출력
        } catch (Exception e) {
            System.out.println("알수없는 예외 발생"); // 예외 메세지 출력
        } finally {
            System.out.println("Finally block");
        }
    }
}

강제 예외 발생

  • throw 키워드와 예외 또는 에러 객체를 인스턴스화 하여 강제 예외 발생
    예) throw new Exception(’에러메세지’);
package Java;

public class HelloJava {
    public static void main(String[] args) {
        try {
            System.out.println("Try block");
            throw new Exception("강제 예외 발생"); // 강제 예외 발생
        } catch (Throwable e) {
            System.out.println("Catch block");
            System.out.println(e.getMessage());
        } finally {
            System.out.println("Finally block");
        }
    }
}
profile
개발 일기 ( •̀ ω •́ )✧

0개의 댓글

관련 채용 정보