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()