Hello World/BN
NodeJS - Error Handling
Young's Today
2022. 11. 25. 18:13
1. Error Handling
에러를 관리하는 방법, 예상치 못한 상황에 대처하는 방식
2. try / catch
- 서버에서 에러가 발생하지 않게 예외 처리하기 위해 try - catch문 사용
- string.toUpperCase()를 사용하여 대문자로 변경할 때 문자열이 아닌 데이터가 들어오면 에러 발생
- 아래와 같이 했을 때 에러가 발생하더라도 프로그램이 멈추지 않고 에러를 기록할 수 있음
const users = ["Lee", "Kim", "Park", 2];
try {
for (const user of users) {
console.log(user.toUpperCase());
}
} catch (err) {
console.error(`Error: ${err.message}`);
}
// 출력
// LEE
// KIM
// PARK
// Error: user.toUpperCase is not a function
3. Throw
- 현재 실행되고 있는 함수는 실행을 멈추게 됨
- 강제로 에러를 발생시켜야 하는 경우 사용
function withdraw(amount, account) {
if (amount > account.balance)
throw new Error("잔고가 부족합니다.");
account.balance -= amount; // 여기서부터 에러 발생 후 이므로 출력되지 않음
console.log(`현재 잔고가 ${account.balance}남았습니다.`);
}
const account = { balance: 1000 };
withdraw(2000, account);
// Error: 잔고가 부족합니다.
4. finally
- http 연결이 되고 있거나 파일과 같은 자원을 처리할 때 사용
- 무의미한 메모리 차지하지 않도록 에러여부와 상관없이 일정 시점에서는 자원을 삭제시켜야 함
- 에러가 발생했는지 여부와 상관없이 언제든지 실행됨
function errorException(isThrow) {
try {
console.log('자원을 할당하였습니다.');
if (isThrow) throw new Error();
} catch (error) {
console.log('에러가 발생했습니다.');
} finally {
console.log('자원을 제거하였습니다.');
}
}
errorException(false); // 에러 발생하지 않았기 때문에 catch(error) 통과
// 자원을 할당하였습니다.
// 자원을 제거하였습니다.
errorException(true); // 에러 발생하면 발생하면 catch(error) 출력 후 실행
// 자원을 할당하였습니다.
// 에러가 발생했습니다.
// 자원을 제거하였습니다.