최근 많이 게을러졌다. 정신 차리자.
예외 클래스의 구분
- Error Class 상속
- 시스템 오류 수준의 상황으로 프로그램 코드상에서 처리할 수 있는 수준의 문제가 아님
- VirtualMachineError, IOError
- Exception Class 상속
- 코드 오류가 아닌 실행과정에서 발생하는 예외적인 상황을 표현하기 위한 클래스들
- 실질적인 예외처리 코드를 반드시 명시하거나, throws 키워드를 사용해서 해당 예외를 넘길것을 알려야 함
- public void testCase1() throws IOException - throws 키워드 사용 예
- throws 사용시 해당 메소드를 호출한 지점으로 계속해서 넘어감
- 여러가지 예외상황을 throws 할 것을 한꺼번에 표기할 수 있음.
- public void testCase2() throws excp1, excp2 - 여러 예외상황을 한꺼번에 throws하는 예
- java.lang.IOException 같은 예외 클래스
- RuntimeException Class 상속
- Exception Class를 상속함
- 코드 오류로 인해서 발생하는 경우가 대부분이므로 코드의 수정을 고려해야 한다.
- NegativeArraySizeException - 배열 길이를 음수로 지정할 경우
- ArrayStoreException - 배열에 적절하지 않은 인스턴스를 저장할 때
- 그외로 Arithmetic, ClassCast, NullPointer, ArrayIndexOutOfRange 등등
사용자 정의 예외 클래스
- Exception 클래스를 상속하는 클래스를 만들면 사용자가 직접 예외상황을 정의할 수 있다.
- 직접, 간접 상속 모두 가능함
- 정의한 예외처리 루틴으로의 이동은 throw 키워드를 통해서 사용할 수 있다.
- throw new __DEFINE_EXCEPTION_NAME__;
- 예외상황을 정의하는 클래스를 만들 때는 가능한 단순한 상속관계로 구성할 것.
Finally
- try-catch문의 구성요소
- try-catch문을 탈출하기 전에 실행하는 문법
- 예외가 발생하든 발생하지 않든 무조건 내부의 코드를 무조건 실행한다.
- 내부에 어떤 코드가 있는지에 따라서 finally문 내부에서도 try-catch문을 사용할 필요가 있음
try-with-resources
- try문에 추가적으로 리소스 관리 기능을 할당하는 것
- try(BufferedWriter writer = Files.newBufferedWriter(File)) - 파일 관리 예
- 파일의 open과 close를 자동적으로 수행함
- finally문 내부에서 발생할 수 있는 예외에 대해서 다시 try-catch문을 사용하는 경우를 막을 수 있다.
- java.lang.AutoCloseable 인터페이스가 구현된 인스턴스에 한해서 사용할 수 있다.
'프로그래밍 > Java' 카테고리의 다른 글
Java - Java의 기본 클래스 (1) (0) | 2020.07.25 |
---|---|
Java - JVM의 메모리 모델과 Object 클래스 (0) | 2020.07.23 |
Java - 예외처리 (1) (0) | 2020.07.12 |
Java - 인터페이스 (0) | 2020.07.08 |
Java - 상속 (3) (0) | 2020.07.08 |