ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java -Try Catch
    JAVA 2025. 2. 27. 13:42

    에러(Error)?

     프로그램이 비정상적으로 동작해서 발생하는 것을 말한다

    ( StackOverflowError[스택이 쌓여 발생되는 에러], OutofMemoryError [메모리 부족 에러] 등등) 

    예외(Exception)?

     

    ●  개발자의 실수로 예기치 않은 상황이 발생했을 때 발생하는 상황.

       프로그램 실행 중 예상치 못한 상황이 발생했다는 것을의미.

    10/ 0 (예외. by zero)

     

    ●  프로그램 예외를 처리 하지 않으면 프로그램 중단된다.

    ●    try-catch로 예외 상황을 처리하여 문제 해결이 가능하다.

     

    int ret = 10/ 0;    => 프로그램 중단.
    
    
      try{
        int ret = 10/ 0;     => 프로그램이 중단 되도 실행된다.
         }
        catch( ArithmeticException ex){
    
           System.Out.Println("산술 예외가 발생 했다.");
           System.Out.Println("분모가 0이 되면 안됩니다.");
       }

    throw new [ "사용자 지정"Exception]

     

    ●   의도적으로 예외를 발생시킬수도 있다.

     

      ex)

       int age  = 10;
       if(age < 10){
         throw new IllegalArgumentException("미성년자는 접근 할수 없음.")
    }

     

     
    예외 전파

        메서드에서 발생한 예외가 해당 매서드 내에서 처리되지 않았을때, 매서드를 호출한 상위 매서드로 전달되는 과정.

      UncheckException CheckedException
    처리 여부 ●   강제로 하지 않는 예외 ●   강제로 예외 처리.
    예외 처리 실행 여부 ●   시작지점까지 전파된다.

    ●   끝까지 처리 하지 않으면
    비정상 종료한다.
    ●   예외 처리 하지 않을시 컴파일 오류가 발생

    ●  반드시 try - catch로 예외 처리 하거나 throw키워드를 사용해야 한다.

    -> throw로 예외 처리의 책임을 호출자에게 전가 할수 있다.
    확인 시점 ●   실행 단계 ●   컴파일 단계
    대표적으로는.... ●  RuntimeException을 상속 받는
        모든 예외를 전부 

     - Arithmetic    
        => 정수를 0으로 나눈 경우

    -  ArrayStore
       => 배열 유형이 허락하지 않는
           객체를  배열에 저장하는 경우.    

    - ArrayIndexOutOfBound
      => 배열을 참조하는 인덱스가 잘못된 경우.
    - ClassCast
       =>적절치 않게 class를 형변환 한 경우.

    - NullPoint
      => Null 객체를 참조했을 경우.

    - NegativeArraySize
      => 배열의 크기가 오류인 경우.

    - NoClassDefFound
      => 클래슬를 찾지 못한 경우

    - OutOfMemory
       => 사용 가능한 메모리가 없는 경우

    -IndexOutOfBounds
       => 객체 범위를 벗언난 Index를 사용한 경우.

    - IllegalArgument
      => 매서드 유형이 일치하지 않는
          매개 변수를 전달하는 경우.

    - IllegalMonitorState
      => 스레드가 스레드에 속하지 않는
          객체를 모니터 하려고 기다리는 경우.

    - IllegalState
        => 적절하지 않는 때에 매서드를
             호출한 경우.

    ●     Exception 클래스를 직접 상속 받는
         모든 예외를
    CheckedException 이라고 한다

    ●      (RuntimeException 제외)


    -IO
       => 입출력 작업 중에 발생한 오류

    - ReflectiveOperation

    - FileNotFound
       =>  존재하지 않는 파일의 입력

    - ClassNotFound
        => 클래스의 이름을 잘못 기재한 경

    -DataFormat
      => 입력한 데이터 형식이 잘못된 경우

     

     

     

    p.s 프로그램을 만들다가 발생하는 오류를 단순 구글링을 했다면 try-catch를 하는 중요한 이유를 깨닳았다.

         하지만, 무분별한 try-catch는 프로그램의 성능을 낮추고, 동시에 가독성을 떨어뜨리기 때문에 가능한

        필수적으로 필요한 곳이 아니라면 , 예외 방지를 하기위한 로직을 잘 작업해야하는 것을 깨닭았다.

    'JAVA' 카테고리의 다른 글

    Java - 계산기 [트러블 슈팅]  (0) 2025.03.05
    숫자 비교하기  (0) 2025.03.04
    JAVA - 클래스. 객체 설계도 작성 방법  (0) 2025.02.26
    JAVA -배열 , for문  (0) 2025.02.24
    JAVA -for, while, do-while  (0) 2025.02.24
Designed by Tistory.