ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 예외처리
    개발 강의 정리/JAVA 2021. 6. 28. 12:09

    1. 오류의 종류

     

    (1) 에러(Error)

    :개발자가 처리할 수 없는 상황. 캐치는 가능하지만 개발자가 처리할 수는 없음. 

     

    (2) 예외(Exception)

    : 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인한 오류

     

    2. 예외의 종류**중요**

    (1) Checked Exception(일반(컴파일 체크) 예외 )

    :예외 처리 코드 없으면 컴파일 오류 발생 

    (2) Runtime Exception(실행 예외)

    :예외 처리 코드를 생략하더라도 컴파일이 되는 예외

    -경험상 처리하는 부분

     

    3. 예외 클래스**중요**

    ^^^^^^소위 다이어그램이라고 부름 ^^^^^

     

    패키지: java.lang 패키지. lang 패키지는 임포트 없이 사용 가능함. 

    상위 클래스: java.lang.Exception  

     

    java.lang.Exeption클래스 위에 Throwable 클래스가 있는데 이게 바로 최상위 클래스이다. 

                       Throwable 
                             |
                -------------------------
                |                             |
    Exception Class                Error Class

     

     

    *예외 기본 성질은 던지는(throw) 것이다. 누구한테? => 메소드 호출자에게. 

    *Exception Class를 상속 받는 클래스Runtime Exception 클래스(이 클래스를 상속받는 클래스포함)를 제외하고 모두 Checked Exception 이다. 

    *예외를 만났을때 tupe Hierarchy를 통해 어떤 예외 클래스를 상속 받고 있는지(Runtime인지 Checked인지) 확인! 

     

    4. RuntimeException

    : 컴파일시 체크 못함. 

     

    1. NullPointerException

    : 참조 변수안에 객체의 주소가 없는 상태로 참조변수를 사용했을 때 발생함. 

     

    public class NPExceptionExmaple {
               public static void main(String[] args) {
                        String data =null;
    
                         log.info(data.toString());
                 }//main
    }//end class
    

     

    ============================================

    Exception in thread "main" java.lang.NullPointerException //예외 이름
        at exam01Exception.NPExceptionExmaple.main(NPExceptionExmaple.java:11)//내가 만든 소스

     

     

    2.ArrayIndexOutOfBoundsException

    : 배열에서 인덱스 범위를 초과하여 사용할 경우 발생함. 

     

     

    3.ClassCastException

    : 상속관계에서 발생함. 다운캐스팅시에 부모타입으로 들어간 자식객체의 타입을 잘못 지정했을때 발생한다. 

    즉, 부모타입으로 들어간 자식객체의 타입을 정확히 모를때 발생하는것. 

     

     

    5. 예외처리 코드 (try-chatch-finally)

    Checked Exception : 반드시 작성해야 컴파일 가능

    Runtime Exception : 컴파일러가 체크하지 못하며 개발자 경험에 의해 작성. 

     

     

    try 블럭은 단 한번만(안 나올수도 있음) 나올수 있으며, Catch 블럭은 0개 이상나온다.

     

    try{
    	예외 발생 코드
    } catch (예외 클래스 e){
    	예외처리 
    }finally {
    	항상실행;
    }

     

    try 블럭에는 예외가 발생할만한 소지가 있는 코드를 넣고

    catch 블럭 안에는 예외 발생시 예외처리를 하는 코드를 넣는다. 

    finally 블럭은 예외가 발생하든 안 하든 항상 실행한다. 

     

    입문자 입장에서는 try 블럭에 무슨 코드를 넣을것인가 판단하는 것이 어렵다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

Designed by Tistory.