🌎 Web/JavaScript

[JavaScript] try / catch로 예외 처리하기

오늘 ONEUL 2022. 4. 22. 00:44

예외 처리란?

예외는 프로그램 실행 중에 발생하는 런타임 오류를 의미한다. 이러한 예외가 발생했을 때 프로세스는 더 이상 동작하지 않기 때문에 try / catch / finally를 사용한 예외처리를 통해 프로세스가 동작할 수 있게 해주어야 한다.

 

 

 

 

try / catch / finally

try {
    예외를 처리하길 원하는 실행 코드;
} catch (ex) {
    예외가 발생할 경우에 실행될 코드;
} finally {
    try 블록이 종료되면 무조건 실행될 코드;
}
  • try 블록 - 기본적으로 가장 먼저 실행되고, 에러 발생이 예상되는 코드를 작성한다. (기본)
  • catch 블록 - try 블록에서 발생한 예외 코드나 Error 객체를 인수로 전달받아 처리한다. (옵션)
  • finally 블록 - 예외처리와 관계없이 무조건 실행된다. (옵션)

 

 

 

 

throw

throw 표현식;
  • throw - 예외를 발생시키는 키워드이다. 표현식에는 예외 코드를 나타내는 숫자(Number)나 오류 메시지를 담고 있는 문자열(String), Error 객체(Object) 등이 올 수 있다.

 

 

 

 

Error 객체

  • 런타임 오류가 발생할 때마다 오류 정보를 제공한다.
  • error.name - 오류의 타입을 설정하거나 반환한다.
  • error.message - 오류 메시지를 설정하거나 반환한다.

 

 

 

 

예외 처리 예제

console.log('프로세스 시작');
try {
    aleeddrt('경고창 실행'); // alert 철자 오류
    console.log('경고창 실행 확인'); // 오류 발생으로 실행되지 않음
} catch (err) {
    console.log('catch 영역');
    console.log(err.message); // aleeddrt is not defined
    console.log(err.name); // ReferenceError

    // try catch 중첩
    try {
        if(err.message.toString().length > 0) // true
            throw 'throw error';
    } catch(err2) {
        console.log('err2:', err2); // err2: throw error
    } finally {
        console.log('err2', 'finally');
    }

} finally {
    console.log('finally 영역 무조건 실행됨');
}
console.log('프로세스 종료');
  • alert 철자 오류로 직접 오류를 발생시킨 후 catch 영역 안 쪽에서 다른 try 영역 실행시킨다.
  • 바깥쪽 err.messagelength가 0보다 클 경우, 즉 에러가 발생했을 경우 throw를 이용하여 예외 상황을 알린다.
  • err2 파라미터에 throw가 담긴 것을 알 수 있다.
  • finally 영역은 무조건 실행된다.
  • 예외 처리를 통해 프로세스가 멈추지 않고 종료되었다.

 

 

 

 

※ 참고자료

https://www.w3schools.com/js/js_errors.asp

http://www.tcpschool.com/javascript/js_exception_exception