///////
Search
☘️

예외 처리

예외(Exception)란?

예외(Exception)

단순한 문법 오류가 아닌 실행 중간에 발생하는 정상적이지 않은 상황 을 의미
Exception과 Error는 다름
Exception VS Error

예외처리

자바는 예외처리 매커니즘을 제공
예시

예외 처리 방법

try catch finally

예제
try~catch 문 적용 전
try~catch 문 적용 후
catch문 활용
catch 문의 Exception 객체 활용하기
finally 활용
e.getMessage()e.printStackTrace() 차이
catch문을 2개 이상 사용해보기

throws

메서드에서 처리해야 할 하나 이상의 예외를 호출한 곳으로 전달 (처리를 위임)
예외가 없어지는 것 단순히 전달
예외를 전달받은 메서드는 다시 예외 처리의 책임이 발생함
예제
import java.io.IOException; // throws public class ThrowsTest { public static void main(String[] args) throws IOException { byte[] byteArr = {'a', 'b', 'c'}; // 숫자로 변환되어 배열에 저장됨 System.out.write(byteArr); } }
Java
복사
System.out.write() 란?
write함수는 IOExceptionthrows를 이용하여 예외처리를 하였으므로 write 함수를 호출한 main() 함수에도 마찬가지로 IOException을 위한 예외처리를 해주어야 함
위의 코드처럼 main 함수에서 throws 를 이용한 예외처리를 할 경우, (main함수를 호출하는) JVM이 예외처리를 받아 콘솔에 발생한 예외 메세지를 띄우고 프로그램을 종료하게 됨

예외 클래스 구분

예외의 종류

자바에서는 예외를 클래스를 통해 관리한다.
모든 예외 클래스는 java.lang패키지의 Exception 클래스의 상속을 받는다.
크게 두 종류로 구분할 수 있다.
체크 예외(checked exception)
실행 예외(runtime exception) 또는 언체크 예외 (unchecked exception)

체크 예외

체크 예외는 컴파일 과정에서 예외를 검사하고 예외 처리를 하지 않으면 컴파일 오류가 발생된다.
컴파일 시 발생 가능한 예외에 대한 대부분의 처리가 가능하다.
체크 예외는 Exception 클래스를 상속받으나 RuntimeException 클래스는 상속받지 않는다.

언체크 예외

언체크 예외는 컴파일 시 예외를 검사하지 않는다.
따라서 예외 처리를 하지 않아도 컴파일이 가능하다.
하지만 컴파일이 가능하다고 해서 예외처리가 필요 없는 것이 아니다.

예외 처리를 프로그래머가 해야 하는 경우

체크 예외는 개발자가 처리하지 않아도 컴파일 과정에서 처리가 가능하다.
언체크 예외는 개발자의 경험에 따라서 예외가 발생 가능한 코드에 대해서 예외 처리를 알아서 해줘야 한다.
예시