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