[Java] Error와 Exception

Jiisuniui·2023년 12월 26일

Java의 모든 것

목록 보기
7/7
post-thumbnail

Error와 Exception

Error

  • Error는 시스템 레벨에서 발생하여, 개발자가 어떻게 조치할 수 없는 수준
  • 컴파일 시 문법적인 오류와 런타임 시 널포인트 참조와 같은 오류로 프로세스에 심각한 문제를 야기 시켜 프로세스를 종료 시킬 수 있음.
  • 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우
  • 메모리 부족이나 스택오버플로우와 같이 발생하면 복구할 수 없는 심각한 오류

Exception

  • 예외는 개발자가 구현한 로직에서 발생하며 개발자가 다른 방식으로 처리가능한 것들로 JVM은 정상 동작
  • 컴퓨터 시스템의 동작 도중 예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받는 것
  • 발생하더라도 수습할 수 있는 비교적 덜 심각한 오류
  • Error의 상황을 미리 미연에 방지하기 위해서 Exception 상황을 만들 수 있음

Throwable 클래스

  • Throwable 클래스는 예외처리를 할 수 있는 최상위 클래스
  • Exception과 Error는 Throwable의 상속을 받음

Exception의 2가지 종류

Checked Exception

  • 예외처리가 필수이며, 처리하지 않으면 컴파일되지 않음
  • JVM 외부와 통신(네트워크, 파일시스템 등)할 때 주로 쓰임
  • RuntimeException 이외에 있는 모든 예외, IOException, SQLException 등

Unchecked Exception

  • 컴파일 때 체크되지 않고, Runtime에 발생하는 Exception
  • RuntimeException 하위의 모든 예외, NullPointerException, IndexOutOfBoundException 등

Exception Handling

  • 잘못된 하나로 인해 전체 시스템이 무너지는 결과를 방지하기 위한 기술적인 처리
  • JAVA에서는 예외와 에러도 객체로 처리

예외가 주로 발생하는 원인

  • 사용자의 잘못된 데이터 입력
  • 잘못된 연산
  • 개발자가 로직을 잘못 작성
  • 하드웨어, 네트워크 오작동
  • 시스템 과부하

Exception Handling의 2가지 방법

  • 직접 try ~ catch 를 이용해서 예외에 대한 최종적인 책임을 지고 처리하는 방식
  • throws Exception 을 이용해서 발생한 예외의 책임을 호출하는 쪽이 책임지도록 하는 방식 (주로 호출하는 쪽에 예외를 보고할 때 사용)

주요 Method

printStackTrace()

  • 발생한 Exception의 출처를 메모리상에서 추적하면서 결과를 알려줌
  • 발생한 위치를 정확히 출력해줘서 제일 많이 쓰며 void를 반환

getMessage()

  • 한줄로 요약된 메세지를 String으로 반환

getStackTrace()

  • jdk1.4 부터 지원
  • printStackTrace()를 보완
    -StackTraceElement[] 이라는 문자열 배열로 변경해서 출력하고 저장
profile
why error?

0개의 댓글