on
[Java] Error & Exception
[Java] Error & Exception
프로그램 오류: 프로그램 실행 중 어떤 원인에 의해 오작동을 하거나 비정상적으로 종료되는 경우
Error: 컴파일 시 문법적인 오류, 런타임 시 null pointer 참조와 같은 오류로 프로세스에 심각한 문제를 야기시켜 프로세스를 종료시킬 수 있다. (메모리 부족, stackoverflow)
Exception: 시스템 동작 중 예기치 않은 이상 상태가 발생하여 수행중인 프로그램이 영향을 받는 것
Exception Handling
오류로 인해 전체 시스템이 무너지는 것을 방지하기 위한 처리이다.
자바에서는 error와 exception도 객체로 처리한다.
exception 원인: 사용자의 잘못된 데이터 입력, 잘못된 로직, 하드웨어/ 네트워크 오작동 등
Throwable 클래스
Throwable 클래스는 예외처리를 할 수 있는 최상위 클래스이다. Error와 Exception은 Throwable를 상속받는다.
Error (에러)
에러는 시스템 level에서 발생하며, 개발자가 조치할 수 없는 수준을 말한다.
ex> OutofMemoryError: JVM에 설정된 메모리 한계를 벗어났을 경우. heap 사이즈 부족, 너무 많은 class 로드 등\
이를 해결하기 위한 방법으로는 dump파일 분석, jvm 옵션 수정 등이 있다.
Exception(예외)
예외는 개발자가 구현한 로직에서 발생하며, 개발자가 처리 가능하다. JVM은 정상 동작한다.
Checked Exception: 예외처리가 필수이며, 처리하지 않으면 컴파일되지 않는다. JVM 외부와 통신할때 주로 발생한다.
-> RuntimeException 이외의 모든 exception
-> RuntimeException 이외의 모든 exception Unchecked Exception: 컴파일 때 체크되지 않고, Runtime에 발생하는 Exception
-> RuntimeException 하위의 모든 exception
ex> NullPointerException, IndexOutOufBoundException 등
Exception Handling
자바에서는 모든 예외가 발생했을 때 Exception 객체를 생성한다. 예외처리에는 크게 2가지 방식이 있다.
예외가 발생할 가능성이 있는 부분에 직접 try-catch 를 이용하여 예외에 대한 최종 책임을 지고 처리하는 방식
try에는 예외 발생 가능성이 있는 코드가, catch에는 예외 발생 시 수행할 코드가 들어간다.
를 이용하여 예외에 대한 최종 책임을 지고 처리하는 방식 try에는 예외 발생 가능성이 있는 코드가, catch에는 예외 발생 시 수행할 코드가 들어간다. throws Exception을 이용해서 호출하는 쪽이 예외의 책임을 지도록 하는 방식
호출하는 곳을 try-catch로 감싸 예외를 처리한다.
출처: https://gyoogle.dev/blog/computer-language/Java/Error%20&%20Exception.html
from http://gokong.tistory.com/35 by ccl(A) rewrite - 2021-10-11 20:27:41