dev/JavaScript

CPS 예외 처리 패턴

amuse1991 2019. 11. 18. 20:43

CPS에서는 일반적으로 요류를 호출 체인의 다음에서 콜백으로 전달하여 수행된다.

Node.js 콜백 규칙에 따르면 오류는 콜백의 첫번째 인수로 전달된다.

const fs = require('fs')
function readJSON(fileName, callback){
	fs.readFile(filename, 'utf8',(err,data)=>{
    	let parsed;
        if(err)
        	// 오류 전달 후 현재 함수 종료
            // 콜백이 호출되는 즉시 readJSON을 종료하기 위해 return을 사용한다.
        	return callback(err);
        try{
        	parsed = JSON.parse(data)
        }catch(err){
        	// 에러 catch 후 오류 전달
        	return callback(err);
        }
        callback(null,parsed)
    }
}

비동기 콜백 내부에서 예외가 발생하면 예외가 이벤트 루프로 이동하여 다음 콜백으로 전파되지 않는다. 어플리케이션은 예외가 이벤트 루프에 도착하는 순간 중단된다.