TIL/남궁성의 자바의 정석
자바의 정석 ch8-9,10 예외 발생 시키기
minOE
2024. 9. 8. 18:30
728x90
ch8-9 예외 발생 시키기
1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든다.
Exception e = new Exception("고의로 발생 시킴");
2. 키워드 throw를 이용해서 예외를 발생시킨다.
throw e;
예제
import java.util.logging.Level; import java.util.logging.Logger; public class Ex8_6 { private static final Logger logger = Logger.getLogger(Ex8_6.class.getName()); public static void main(String[] args) { try { Exception e = new Exception("고의로 발생 시킴"); throw e; // 예외 발생시킴 //throw new Exception("고의로 발생 시킴") 한줄로 축약 가능 } catch (Exception e) { System.out.println("에러 메세지 : " + e.getMessage()); logger.log(Level.SEVERE, "An error occurred", e); } System.out.println("프로그램 정상 종료되었음"); } }
ch8-10 checked예외, unchecked예외
- checked 예외 : 컴파일러가 예외 처리 여부를 체크 (예외 처리 필수) - Exception과 자손들
- unchecked 예외 : 컴파일러가 예외 처리 여부를 체크 안함(예외 처리 선택)- RuntimeException과 자손들
checked 예외 - 예외 처리 필수
public class Ex8_7 { public static void main(String[] args) { throw new Exception(); // 고의로 예외 발생 컴파일에러 checked예외 (예외처리 필수) } }
예외처리public class Ex8_7 { public static void main(String[] args) { try { throw new Exception(); // 고의로 예외 발생 컴파일에러 checked예외 (예외처리 필수) } catch (Exception e) {} } }
unchecked 예외 - 예외 처리 선택public class Ex8_8 { public static void main(String[] args) { throw new RuntimeException(); //언체크드예외, 런타임 시점에서 예외발생 } }
Unchecked 예외의 선택적 처리 이유:
□ 프로그래머의 실수 반영
├─ 주로 논리적 오류나 실수로 발생
├─ 예: NullPointerException, ArrayIndexOutOfBoundsException
└─ 코드 작성 시 주의로 대부분 예방 가능
□ 코드 가독성 향상
├─ 모든 Unchecked 예외 처리 강제 시 코드 복잡화
└─ 불필요한 예외 처리 코드 감소로 가독성 개선
□ 유연성 제공
├─ 상황에 따른 예외 처리 여부 결정 가능
└─ 더 유연한 코드 작성 지원
□ 실행 시간 효율성
├─ 필요한 경우에만 선택적 처리 가능
└─ 불필요한 예외 처리로 인한 성능 저하 방지
□ 예외 전파의 용이성
├─ 상위 레벨로의 예외 전파 용이
└─ 적절한 위치에서의 예외 처리 가능
728x90

