Search
Duplicate
🎣

예외처리

태그
개념
정의
상위 항목
하위 항목
애플리케이션의 규칙적인 흐름을 유지할 수 있도록 런타임 중에 발생하는 오류를 처리하는 효과적인 방법 중 하나
오류란 JVM 메모리 부족, 메모리 누수, 스택 오버플로우 오류, 라이브러리 비호환성, 무한 재귀 등의 복구가 불가능한 상태
Excepiton Hierarchy
: 모든 예외 및 오류 유형은 계층 구조의 기본 클래스인 Throwable 클래스의 하위 클래스다.
: Error는 Java Runtime System(JVM)에서 Runtime Environment(JRE)와 관련된 오류를 나타내는 데 사용됨
Type of Exceptions
Built-in Exception
1.
Checked Exception : 확인된 예외는 컴파일 타임에 컴파일러에 의해 확인되기 때문에 컴파일 타임 예외라고 함
2.
Unchecked Exception : 프로그램이 검사되지 않은 예외를 발생시키고 우리가 이를 처리하거나 선언하지 않았더라도 컴파일 오류를 발생시키지 않음
User-Defined Exception
: 경우에 따라 특정 상황을 설명할 수 없는 상황에서 사용자 정의 예외를 만들 수도 있음
Advantage of Exception Handling
1.
프로그램 실행 완료를 위한 제공
2.
프로그램 코드 및 오류 처리 코드의 쉬운 식별
3.
오류 전파
4.
의미 있는 오류 보고
5.
오류 유형 식별
JVM이 예외를 처리하는 방법
기본 예외 처리
: 메서드 내에서 예외가 발생하면 예외 개체라는 개체를 만들어 런타임 시스템(JVM)에 전달, 예외 개체에는 예외의 이름과 설명 및 예외가 발생한 프로그램의 현재 상태가 포함, 예외 개체를 만들고 런타임 시스템에서 처리하는 것을 예외 발생이라고 하며 예외가 발생한 메서드에 도달하기 위해 호출된 메서드 목록이 존재할 수 있으며 이를 호출 스택이라고 함
런타임 시스템은 발생한 예외를 처리할 수 있는 코드 블록이 포함된 메서드를 찾기 위해 호출 스택을 검색, 코드 블록을 예외 핸들러라고 함
런타임 시스템은 예외가 발생한 메서드부터 검색을 시작하고 메서드가 호출된 역순으로 호출 스택을 통해 진행
적절한 핸들러를 찾으면 발생한 예외를 핸들러에 전달, 적절한 핸들러란 발생한 예외 객체의 유형이 처리할 수 있는 예외 객체의 유형과 일치함을 의미
런타임 시스템이 호출 스택의 모든 메서드를 검색하고 적절한 처리기를 찾을 수 없는 경우, 기본 예외 처리기로 전달
커스텀 예외 처리
: 예외를 발생시킬 수 있다고 생각되는 프로그램 문은 try 블록에 포함, try 블록 내에서 예외가 발생하면 throw, 이 예외를 포착하고 합리적인 방식으로 처리
: 시스템 생성 예외는 Java 런타임 시스템에서 자동으로 발생, 수동으로 예외를 발생시키려면 throw 키워드를 사용
try-catch
// Java Program to Demonstrate // Need of try-catch Clause // Class class GFG { // Main driver method public static void main(String[] args) { // Taking an array of size 4 int[] arr = new int[4]; // Now this statement will cause an exception int i = arr[4]; // This statement will never execute // as above we caught with an exception System.out.println("Hi, I want to execute"); } }
Java
복사