Error & Exception

Error 와 Exception의 차이

  • Error
    • 시스템이 종료되어야 할 수준과 같이 수습할 수 없는 심각한 문제를 의미한다.
  • Exception
    • 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생한다.

Exception Handling

  • 잘못된 하나로 인해 전체 시스템이 무너지는 결과를 방지하기 위한 기술적인 처리이다.
  • 예외가 발생하는 주요 원인
    • 사용자의 잘못된 데이터 입력
    • 잘못된 연산
    • 개발자가 로직을 잘못 작성
    • 하드웨어, 네트워크 오작동
    • 시스템 과부하
  • JAVA에서 모든 예외가 발생하면 xxxException 객체를 생성한다. 예외를 처리하는 방법에는 크게 2가지가 있다.
    • 직접 try catch를 이용해서 예외에 대한 최종적인 책임을 지고 처리하는 방식
    • throws Exception을 이용해서 발생한 예외를 호출하는 쪽이 책임지는 방식

Throwable 클래스

https://gyoogle.dev/blog/computer-language/Java/Error%20&%20Exception.html

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

Error

https://gyoogle.dev/blog/computer-language/Java/Error%20&%20Exception.html

  • 시스템 레벨에서 발생하여, 개발자가 어떻게 조취할 수 없는 수준을 의미
    • OutOfMemory : JVM에서 설정된 메모리의 한계를 벗어난 상황일 때 발생. 힙 사이즈가 부족하거나 너무 많은 class를 로드할때, 가용가능한 swap이 없을때 큰 메모리의 native 메서드가 호출될때 등이 있다. 이를 해결하기 위해 dump파일분석, jvm 옵션 수정 등이 있다.

Exception

https://gyoogle.dev/blog/computer-language/Java/Error%20&%20Exception.html

  • 예외는 개발자가 구현한 로직에서 발생하며 개발자가 다른 방식으로 처리가능한 것들로 JVM은 정상 동작한다.

Exception의 2가지 종류

  • Checked Exception
    • 예외처리가 필수이며, 처리하지 않으면 컴파일되지 않는다. JVM 외부와 통신할 때 주로 쓰인다.
      • RuntimeException 이외에 있는 모든 예외
      • IOException, SQLException 등
  • Unchecked Exception
    • 컴파일 때 체크되지 않고, Runtime에 발생하는 Exception을 말한다.
      • RuntimeException 하위의 모든 예외
      • NullPointerException, IndexOutOfBoundException 등

Throw 구문

  • 예외처리를 할때 현재 메서드가 직접 처리하지 않고 호출한 곳에 발생 여부를 통보한다. 호출한 메서드는 이걸 다시 throw할지 처리할지 정해야 한다. return 보다 강력

try-with-resource

  • try()에 자원 객체를 선언해 사용하면, try 블록이 끝날 때 해당 자원을 자동으로 종료 해준다. 다만 AutoCloseable 인터페이스가 구현된 객체여야 사용 가능하다.

'Computer science > JAVA' 카테고리의 다른 글

Composition  (0) 2023.03.22
Interned String in Java  (0) 2023.03.22
GC  (0) 2023.03.16
JVM  (0) 2023.03.16
Instrinsic Lock  (0) 2023.01.08

+ Recent posts