ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 예외 2,3
    Computer Science/Java 2019.01.13 20:15

    예외 던지기 (예외의 강제)

    api 사용 시 설계자의 의도에 따라 예외를 반드시 처리해야 하는 경우

    Ex)

    out.txt 파일 읽어서 화면에 출력 -> out.txt 파일을 프로젝트의 루트 디렉토리에 위치

    FileReader 클래스 API문서에서 찾아보면 FileReader의 생성자가 동작 할 때 파일을 열 수 없는 경우 생길 수 있고

    이런 경우 생성자의 사용자에게 위임. 즉 throw(던지다)고 표현. API의 사용자 쪽에서 예외에 대한 처리를 반드시 해야함.

    내부의 try...catch 구문 제거 -> run 옆에 throws IOException, FileNotFoundException 추가 -> 다음 사용자에게 위임


    예외 만들기 (소비자에서 생산자로)

    throw는 예외 발생 명령어.  throw 뒤에는 예외 정보를 가지고 있는 예외 클래스 위치.

    예외사용해야 할 상황
    IllegalArgumentException매개변수가 의도하지 않은 상황을 유발시킬 때
    IllegalStateException메소드를 호출하기 위한 상태가 아닐 때
    NullPointerException매개 변수 값이 null 일 때
    IndexOutOfBoundsException인덱스 매개 변수 값이 범위를 벗어날 때
    ArithmeticException산술적인 연산에 오류가 있을 때

    우선 중요한 예외 클래스.

    • Throwable
    • Error
    • Exception
    • Runtime Exception

    checked 예외는 반드시 예외처리

    unchecked 해도 되고 안 해도 되는 예외다. 이 지점이 IOException, ArithmeticException이다.

    ArithmeticException의 부모는 RuntimeException 반면 IOException은 Exception의 자식이지만 RuntimeException의 자식은 아님.

    즉 IOException은 checked, ArithmeticException은 unchecked (Error도 uncheck)


    나만의 예외 만들기

    API쪽에서 예외 던짐 -> API 사용자 쪽에서 상황 복구 -> checked 예외 사용

    사용자가 API의 사용방법을 어겨서 발생하는 문제 or 예외 상황 이미 발생한 시점에서 프로그램 종료하는 것이 덜 위험할 때

    unchecked 사용.


    댓글 0