예외처리
예외를 처리 방법
특정 코드 실행시 에러가 발생된다면?
나머지 코드를 계속 실행하는 것은 의미가 없다!
try-catch문
try{
x();
} catch (e) {
// try에서 에러 발생할 경우 실행되는 구문
console.log(e);
console.log('에러발생');
} finally{
// 어떠한 상황에서도 발생
}
에러 던지기
throw를 통해 에러를 던질 수 있다.
function login(id, pw) {
if (id === 'zero' && pw === '0000') {
return true;
}
throw new Error('로그인 실패');
}
try {
login('one', 111);
} catch (error) {
console.error(error);
console.error('에러발생');
window.alert('에러발생');
} finally {
console.log('로그인 시도 시간: ' + new Date());
}
스택 - 추적
에러는 스택처럼 쌓이게 되는데 확인 가능하다.
try {
x();
}catch(e){
console.error(e.stack);
}
커스텀 - 에러
class 문법을 만들어서 커스텀 에러를 만들 수 있다.
let id = 'b';
class LoginError extends Error {
constructor(message) {
super(message);
this.name = 'LoginError';
}
}
function login(id) {
if (id !== 'a') {
throw new LoginError('로그인 실패');
}
console.log('로그인 성공');
}
try {
login(id);
} catch (error) {
if (error instanceof LoginError) {
console.error(error.message);
} else {
console.error('알 수 없는 에러:', error);
}
}
try {
login('one');
} catch (error) {
console.error(error);
console.error('에러발생');
window.alert('에러발생');
} finally {
console.log('로그인 시도 시간: ' + new Date());
}