본문 바로가기
Study/node.js

[Express] 익스프레스 에러 핸들링 Error handling

by 김만두_ 2022. 11. 29.

Errors in programs

  • compile-time 에러
    • 컴파일러가 에러를 발생시키고 object 파일을 만들지 않는다.
    • e.g.) syntax error
  • Run-time 에러
    • 컴파일러는 아무런 에러를 발생시키지 않고 object 파일을 생성한다.
    • 런타임에, 프로그램은 에러 때문에 더 동작하지 않고 실행을 멈춘다.
    • e.g.) null인 인스턴스의 메서드를 호출하는 경우
  • Logical 에러
    • 프로그램은 에러 없이 동작하지만, 결과는 프로그래머가 예상하지 못한 것이다.
    • 슬프지만 프로그래머 탓이다.

이 셋 중 가장 중점적으로 다루어질 에러는 Run-time 에러이다.

Run-time error

런타임 에러는 errors exceptions로 나누어진다.

  • Errors
    • 회복될 수 없고 프로그램은 멈춰야 한다.
    • e.g.) out of memory, stack overflow
  • Exceptions
    • 에러는 회복될 수 있다.
    • e.g.) arithmetic exception, class cast exception, null pointer exception...
    • 프로그래머는 예외(exception)가 발생했을 때 이 예외들을 관리할 수 있는 핸들러(handler)를 구현할 수 있다.

Errors and Exceptions

자바는 에러와 예외를 클래스로 정의한다.

  • 이들은 Throwable이라는 클래스의 subclass들이다. Throwable은 Object 클래스의 subclass이다.
  • 예외 클래스는 두 카테고리로 나누어진다.
    • RuntimeException과 다른 예외 클래스로 나뉜다.
    • RuntimeException: 주로 프로그래머의 실수(..)에 의해 발생한다.
      • 0으로 나누기, class cast 등...
    • Others: 환경 그리고 사용자 에러에 의해 주로 발생한다.
      • FileNotFoundException, ClassNotFoundException...

Exception Handling: try-catch

위에서 예외는 관리할 수 있다고 언급했다. 예외를 관리함으로써, 프로그램은 무사히 실행을 계속할 수 있게 된다. 자바에서는 어떻게 예외를 관리할 수 있을까?

  • try-catch 블록을 사용함으로써 가능하다.

 

https://velog.io/@ssseungzz7/Java-Exception-handling

 

https://teamdable.github.io/techblog/express-error-handling

 

https://yohanpro.com/posts/nodejs/error-handling

 

https://expressjs.com/en/guide/error-handling.html