본문 바로가기
Programming/JAVA

이론_16. 예외

by yoon9i 2024. 3. 6.
/*
    예외타입 - throw Exception;

    예외 객체 - throw new Exception();


    <예외>

    ◎ 예외(Exception)를 포함하는 자바 언어에서 발생할수 있는 모든 오류의 타입은 Throwable(java.lang.Throwable) 클래스를
      상속받는 모든 것들을 의미한다.


    <예외의 구조>

    -(16) 예외 (1).png 그림 참조


    ◎ throws,throw,catch 대상이 되는 모든 타입(혹은 객체)은 java.lang.Throwable 을 상속 받는다.
    ◎ java.lang.RuntimeException 을 상속받는 모든 예외(Exception)는 빌드(Build)전까지 예외 스코프 및 유효성 검사를 하지 않는다.
    ◎ 그런 이유로 java.lang.RuntimeException 을 상속 받는 모든 예외를 언체크(드) 예외(unchecked Exception,확인되지 않은 예외)
      라고 하며, java.lang.RuntimeException 을 상속 받지 않는 모든 예외를 체크(드) 예외(Checked Exception, 확인된 예외)
      라고 한다.
    ◎ java.lang.Error 및 이를 상속 받는 모든 에러(Error)는 직접 상속 받아 사용하지 않는다.


    <메서드 예외 시그니처>

    ◎ (8) 메서드파일 참고

        ...[throws [예외,...]]?{...}


    <예외 발생시키기>

    ◎ 고의로 어떠한 예외를 발생시키고자 할때 아래와 같이 사용할 수 있다.

        throw [예외 객체];

        가령, java.lang.Exception 타입의 예외를 발생 시키기 위해 아래와 같이 실행할 수 있다.

        throw new Exception("예외 메세지");

    ◎ throw 키워드를 사용하여 예외를 발생시킬 경우 해당 위치에서 즉시 해당 메서드 실행이 중단되고 호출자로 실행점이 넘어간다.
      return 처럼.


    <예외 처리하기>

    ◎ 특정 코드를 실행하면서 발생할수 있는 예외가 발생했을 경우 오류를 이르키며 프로그램을 종료하는 것이 아니라,
      내가 원하는 예외 로직을 실행하기 위해 사용한다.

        try{
            // 예외가 발생할 가능성이 있는 코드
            // try {} 구현부 실행 중 예외가 발생한 구문에서 바로 catch{} 구현부의 실행점으로 옮겨감에 유의한다.
        } catch ([처리할 예외 선언]) {
            // 예외가 발생했을 경우 실행할 코드
            // 위 try {} 코드를 실행하며 예외가 발생하지 않을 경우 해당 catch {} 구문이 실행되지 않음에 유의한다.
        } finally{
            // try {} 구문이 예외 없이 성공적으로 실행이 되든, 예외가 터져서 catch {} 구문이 실행되든 반드시 실행함을 보장 받을 구문
            // try {} 및 catch {} 구현부와 달리 생략할수 있다.
            // finally {} 구현부를 사용하고자 할 때에는 반드시 try-catch 문의 가장 마지막에 적는다.
        }

        하나의 try 문 안에서 발생할수 있는 예외가 여러개이고, 각 오류에 대해 다른 로직을 실행하고자 할 떄 아래와 같이 catch 를
        여러개 사용할수 있다.

        try{

        } catch ([처리할 예외 A 선언]){

        } catch ([처리할 예외 B 선언]){

        } catch ([처리할 예외 C 선언]){

        } finally{

        }

        단, 선행하는 예외의 타입이 후행하는 예외의 타입보다 부모여서는 안된다.

    <Try With Resource>

    ◎ Try With Resource 는 try 문 실행 종료시(catch 종료 포함) 모든 경우에 AutoCloseable(java.lang.AutoCloseable)
      인터페이스를 구현하는 객체의 close() 메서드를 호출하는 것을 보장한다.
    ◎ 주로 JDBC(Java Database Connector) 개발시 JVM 과 DBMS 간의 연결 객체가 닫히지 않아 Connection Leakage(Leak)가 발생,
      어느 시점부터 JVM 에서 DBMS 로 연결하지 못하는 사고를 방지하기 위해 사용한다.

        try ([AutoCloseable 을 구현하는 객체]) {

        } ...





*/

'Programming > JAVA' 카테고리의 다른 글

이론_18. 인터페이스  (0) 2024.03.06
이론_17. 열거형  (0) 2024.03.06
이론_15. 기타 메서드  (0) 2024.03.06
이론_14. Double 클래스  (0) 2024.03.06
이론_13. Integer 클래스  (0) 2024.03.06