JAVA 예외 처리 Exception
Excepton : compile error ( ClassNotFoundException / InterruptedException/ ... )
Runtime Exception : (RuntimeException : NullPointerException /
ArrayIndexOutOfBoundsException/
NumberFormatException)
예외 클래스를 생성하기 위해서는 반드시 예외 조상을 상속받아야 한다.
runtimeException의 여부에 따라 컴파일러의 예외처리 반응 / 요구가 달라 진다.
runtimeException을 상속받았다면 컴파일러가 반응 처리를 하지 않는다. (unchecked exception)
but any other Exception must to do the exception handling.
런타임예외가 아닌 다른 예외를 상속 받는 예외클래스를 생성한다면
예외처리를 실행해야 하고 컴파일러가 예외처리를 확인한다. (checked exception)
입출력 관련 라이브러리 io.. 함수들은 checked exception // 예외처리가 반드시 필요.
예외가 발생하는 경우
함수(메소드)를 호출했을 때.. 또는 함수 연산과정에서 예외 발생.
예외가 발생( 프로그램 비정상) ->>> 예외 객체 출현.
jvm 이 화면에 예외에 대한 오류를 출력하고 프로그램을 종료 시킨다.
>>>>호출 시스템에 따라 예외처리 기대를 계속해서 확인한다 (상위 메소드에 )
예외 처리가 이루어지지 않으면 JVM에서 예외처리 오류를 출력하고 프로그램을 종료시킨다.
예외 처리 >> TRY -CATCH (finally //(option))/// THROW /// THROWS.
예외 처리를 하면 예외는 소멸 / 프로그램 종료를 막는다
예외가 발생하더라도 예외처리를 통해서 (try-catch// throw/ throws)
프로그램 종료를 막고 예외를 처리 함.
프로그램이 예외없이 정상 실행이 될 경우 try-catch는 실행되지 않는다
프로그램 예외가 발생되었을 경우 try- catch 가 실행된다.
finally는 예외발생 유무를 떠나서 항상 무조건 실행되어야 하는 코드
===============================
리소스 자동 닫기
리소스
- 데이터를 제공하는 객체
- 리소스는 사용하기 위해 열어야(open)하며, 사용이 끝난 다음에는 닫아야 (close)함
- 리소스를 사용하다가 예외가 발생될 경우에도 안전하게 닫는 것이 중요
- (try - catch - resources) 블록을 사용하면 예외 발생 여부와 상관없이 리소스를 자동으로 닫아줌
예외 떠넘기기
- 메소드 내부에서 예외 발생시 throws 키워드 이용해 메소드를 호출한 곳으로 예외 떠넘기기
- throws는 메소드 선언부 끝에 작성. 떠넘길 예외 클래스를 쉼표로 구분해서 나열
- 나열할 예외 클래스가 많으면 throws Exception 또는 throws Throwable 만으로 모든 예외 떠넘기기
사용자 정의 예외
- 표준 라이브러리에는 없어 직접 정의하는 예외 클래스
- 일반 예외는 Exception의 자식 클래스로 선언.
실행 예외는 RuntimeException의 자식 클래스로 선언
예외 발생시키기
- throw 키워드와 함께 예외 객체를 제공해 사용자 정의 예외를 직접 코드에서 발생시킬 수 있음.
- 예외의 원인에 해당하는 메세지를 제공하려면 생성자 매개값으로 전달.
'Hello World > JAVA' 카테고리의 다른 글
JAVA - 중첩 선언과 익명 객체 NestedClass/ InnerClass / Anonymous [개발스터디 기몬] (0) | 2023.04.14 |
---|---|
JAVA - Interface [ 개발스터디 기몬] (0) | 2023.04.13 |
JAVA - 예외처리 EXCEPTION - Exception / Runtime Exception [개발스터디 기몬] (0) | 2023.04.10 |
JAVA - 객체지향프로그래밍 OOP 클래스 Memo. [개발스터디 기몬] (0) | 2023.03.29 |
JAVA - 객체지향 프로그래밍 / oop 필드, 생성자, 클래스 / 오버로딩 인스턴스 멤버, 정적 멤버 [개발스터디 기몬] (0) | 2023.03.27 |
댓글