PengTory

[Java] 예외처리 본문

Java

[Java] 예외처리

펭토리 2023. 3. 14. 14:35

예외처리 (Exception)

 

예외: 잘못된 사용 또는 코딩으로 인한 오류

개발자가 예외 처리를 통해 계속 실행 상태를 유지할 수 있다. (프로그램이 중단되지 않도록 하기 위해)

 

일반 예외(Exception): 컴파일러가 예외처리 코드를 검사하는 예외를 말함

실행 예외(Runtime Exception): 컴파일러가 예외처리 코드 여부를 검사하지 않는 예외를 말함

 

구조

try {
      예외 발생 가능성이 있는 코드
} catch (Exception e) {
     예외가 발생하면 실행되는 코드
} finally {
     무조건 실행되는 코드
}

 

public class ExceptionEx {

	public static void main(String[] args) {
		System.out.println("시작");
		try {
			System.out.println(3 / 0); // ArithmeticException 예외 발생 (0으로 나눌 수 없음) -> 바로 catch문 실행
			int[] arr = { 1, 2, 3 };
			System.out.println(arr[4]);
			System.out.println("출력");
		} catch (Exception e) {
			System.out.println("예외발생");
			System.out.println(e.toString());
			System.out.println(e.getMessage());
			e.printStackTrace();
		} finally {
			// 예외가 발생하던 안하던 무조건 실행
			// 리소스 자원을 해제할 때 거의 다 씀 (자원을 효율적으로 사용하기 위해)
			System.out.println("무조건 실행");
		}
		System.out.println("끝");
	}

}

 

throws와 throw

예외 떠넘기기: throws (나를 실행한 곳으로)

강제예외 발생: throw new 예외클래스()

- 실행되는 메서드에서 throws를 하고 있다 -> 무조건 예외처리!! (해결 방법: try ~ catch를 해줌 OR 나도 throws로 던져줌)

                                                                         예외처리 안하면 compile 에러 발생 (unhandled~ )

 

 

+ ) 리소스 자동 닫기

try ~ resource: 자동 close

try 입장

자원객체를 내가 해제시켜주고 싶음 -> ac.close()