JavaScript ES5 ( OOP )

예외 ( throw, [ try / catch / finally ] )

자바스크립트는 예외를 다룰 수 있는 메커니즘을 제공한다.

 

◎ throw

throw 문은 함수의 실행을 중단한다. 

어떠한 예외인지 알려주는 name 속성과, 설명을 위한 message 속성을 가진 객체를 반환해야 한다.

필요한 경우 속성을 더 추가할 수 있다. 

function mul(a,b){
    if(typeof a !== 'nunmber' || typeof b !== 'nunmber' ){
        throw{
            name : 'TypeError',
            message : 'function mul needs numbers',
            args : a + ", " +b
        };
    }
    return a * b;
}
mul(1,"string");    
// Uncaught {name: "TypeError", message: "function mul needs numbers", args: "1, string"}

 

◎ try / catch / finally

throw 문에서 반환한 예외 객체는 try 문의 catch 절에 전달된다.

function tryMul(){
    try {
        mul(1,"string")
    } catch(e) {    // throw 에서 반환한 객체를 e로 받음
        console.log(e);
    } finally {
        console.log("finally");
    }
}
tryMul();
// {name: "TypeError", message: "function mul needs numbers", args: "1, string"}
// finally

finally 절은 try 절의 뒷정리에 사용되는 코드 블록이다.

try 절의 마지막으로 프로그램 제어가 도달한 뒤, finally 절로 이동한다.

try 블록이 일부라도 실행되는 경우 finally 블록의 실행은 보장된다.

( try 에서 return, continue, break 로 제어가 빠져나가는 경우에도 finally 를 우선 실행한다. ) 

 

댓글

댓글 본문