///////
Search
🚫

예외처리

서정희_0928

예외

단순한 문법 오류가 아닌 실행 중간에 발생하는 정상적이지 않은 상황을 뜻한다.
error가 대표적인 예외의 예시이다.

예외처리

자바의 기본 예외 처리의 메커니즘은 문제가 발생한 시점에 대해 정보를 출력한 뒤 프로그램을 종료하는 것이다.
Scanner kb = new Scanner(System.in); System.out.print("a/b... a? "); int n1 = kb.nextInt(); System.out.print("a/b... b? "); int n2 = kb.nextInt(); System.out.printf("%d / %d = %d \n", n1, n2, n1/n2); // 출력되지 않음 System.out.println("Good bye~~!"); }
Java
복사
위와 같은 코드 실행시 b가 0인 경우라면 어떤 수를 0으로 나눌 수 없으므로 오류가 발생하게 되어
‘Good bye’는 출력되지 않고 프로그램이 종료된다.
→다음과 같은 예외처리 방법을 이용하면 이런 상황을 예방할 수 있다.

예외처리 방법

예외처리에는 크게 두 가지 방법이 있다.
try catch (+finally)
throws

Try Catch

1. Try

우선적으로 실행되는 코드이며 예외 발생 가능성이 존재한다.
예외 발생시 catch로 넘어가게 된다.

2. Catch

예외 발생시 실행되는 코드이며 이 부분에서 해당 예외의 처리 방식을 결정하게 된다.

3. Finally

예외 발생과 상관없이 반드시 실행되는 코드이다.

성수연_0928

try-catch문 구조
예제1
예제2
예제3
예제4

김준호

throws - 메서드에 예외 선언(예외 떠넘기기)

자신을 호출하는 메소드의 예외처리의 책임을 넘기는 것. (상위 메소드로 예외를 던짐)
메서드에 예외를 선언하려면, 메서드의 선언부에 키워드 thorws를 사용해서 메서드 내에서 발생할 수 있는 예외를 적어주기만 하면 된다. 그리고 예외가 여러 개일 경우에는 쉼표(,)로 구분한다.
void method() throws Exception1, Exception2, ... ExceptionN { // 메서드의 내용 }
Java
복사
만일 아래와 같이 모든 예외의 최고조상인 Exception클래스를 메서드에 선언하면, 이 메서드는 모든 종류의 예외가 발생할 가능성이 있다는 뜻이다.
void method() thorws Exception){ //메서드의 내용 }
Java
복사
메서드의 선언부에 예외를 선언함으로써 메서드를 사용하려는 사람이 메서드의 선언부를 보았을 때, 이 메서드를 사용하기 위해서는 어떠한 예외들이 처리되어져야 하는지 쉽게 알 수 있다.
자바에서는 메서드를 작성할 때 메서드 내에서 발생할 가능성이 있는 예외를 메서드의 선언부에 명시하여 이 메서드를 사용하는 쪽에서는 이에 대한 처리를 하도록 강요하기 때문에, 프로그래머들의 짐을 덜어 주는 것은 물론이고 보다 견고한 프로그램 코드를 작성할 수 있도록 도와준다.

오류(Error)와 예외(Exception)

오류 : 시스템이 종료되어야 할 수준과 같이 수습할 수 없는 심각한 문제
예외 : 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생
오류와 예외 모두 Object 클래스를 상속 받는 Throwable 클래스를 상속.
Throwable 객체는 오류나 예외에 대한 메세지를 담고, 예외가 연결될 때 연결된 예외의 정보를 기록한다.

Checked Exception과 Unchecked Exception

승환님 자료제공
RuntimeException을 상속하는 클래스 → Unchecked Exception
상속하지 않은 클래스 → Checked Exception으로 분류
RuntimeException 또한 Exception의 일종이지만, 명시적으로 예외처리를 하지 않아도 되기 때문에 이를 특별하게 취급한다.