티스토리 뷰

반응형

Error와 Exception

https://it-mesung.tistory.com/69?category=830540

 

[Java 기초] Exception

Exception Exception, Exception은 원하지 않거나 예기치 않은 이벤트로, 프로그램 런타임에 발생하여 프로그램 명령의 정상적인 흐름을 방해한다. Exception and Error Error : 오류 심각한 문제를 나타내므로,..

it-mesung.tistory.com

 

Error와 Exception의 차이

Error(에러)

  • 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용 프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을 경우 발생하는 것을 말한다.

Exception(예외)

  • 개발자의 잘못된 코딩 혹은 API 접근 실패로 인해 발생하는 프로그램 오류를 말한다.
  • 예외가 발생하면 프로그램이 종료 된다는 것은 에러와 동일하지만 예외는 예외처리를 통해 프로그램을 종료하지 않고 정상적으로 작동되게 만들 수 있다.
  • Java에서는 해당 예외처리를 try/catch문을 통해 진행한다.

 

 

여러 Exception들을 살펴보자

NullPointException

  • 객체 참조가 없는 상태로서, null 값을 갖는 참조 변수를 호출하려 할 때 발생하는 예외이다.

  • 객체를 참조하고 있지 않은데, 객체를 사용하려 하여 발생하는 예외이다.

    class MyClass {
      public String field = "test";
    }
    
    MyClass myClass = null;
    myClass.field;    //NullPointException 발생

     

ArrayIndexOutOfBoundsException

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

 

NumberFormatException

  • 문자열로 되어있는 데이터를 숫자 타입으려 변경하는 경우가 있는데, 숫자 타입으로 변경할 수 없는 문자를 치환하려할 때 발생한다.

 

ClassCastException

  • 타입 변환은 상위 클래스와 하위 클래스 간에 발생하고, 구현 클래스와 인터페이스 간에도 발생한다. 그러나 이런 관계가 아니면 타입 변환이 일어나지 않는데, 이 규칙을 무시하고 타입 변환을 진행시킬 시 해당 exception이 발생한다.

 

 

try/catch와 throw

try/catch

try{
  //에러가 발생할 수 있는 코드 : API 접근 실패, 혹은 여러 Exception 발생
  //Ex. 강제 에러 출력 
  throw new Exception();
}catch (Exception e){
  //에러시 수행
  e.printStackTrace(); //오류 출력
  throw e; //최상위 클래스가 아니라면 무조건 던져주자
}finally{
  //무조건 수행
} 

throw

  • 예외가 발생했을 때, 최상위 클래스가 아니라면 catch문에서 오류에 관련된 메시지를 출력하고나서 오류는 무조건 던져줘야 한다.
  • 하지만 개인적인 생각에서는 무조건 던져줘서는 안된다.
    • 이유는, 현재 애플리케이션을 유지보수하고 있는 환경이라면 정상적인 동작이 꾸준히 이루어져야하기 때문에 catch문에서 로그를 찍어주는 방식으로 처리하고, throw는 하지 않는 것이 좋다.
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함