// 특정 월의 당번으로 지원하는 함수
function applyForMonth (date) {
try {
if (typeof date !== 'number') {
throw new TypeError('숫자로 입력해주세요.');
}
if (date < 1 || date > 12) {
throw new RangeError('유효한 월을 입력해주세요.');
}
console.log(`${date}월 당번으로 등록되셨습니다.`);
} catch (e) {
console.error('🛑 에러 발생!', e);
console.log('다시 등록해주세요.');
}
}
applyForMonth(5);applyForMonth('5');
군대 에러
class MilitaryError extends Error {
constructor (position, ...params) {
super(...params);
this.name = 'MilitaryError';
switch (position) {
case '이병':
this.message = '개판이군. 맞선임 데려와봐.';
break;
case '일병':
this.message += ' 엎드려 뻗쳐.';
break;
case '상병':
this.message = '짬을 거꾸로 먹었나. ' + this.message;
break;
default:
this.message = '집에 갈 때 됐다 이거지? ㅎㅎ';
}
}
}
class Soldier {
constructor (position) {
this.position = position;
}
speak (word) {
console.log(this.position + ':', word);
try {
if (!'다나까'.includes(word.at(-1))) {
throw new MilitaryError(
this.position,
'군대에서 모든 말은 다나까로 끝낸다.'
);
}
} catch (e) {
console.error(e);
}
}
}
['이병', '일병', '상병', '병장'].forEach(pos => {
const soldier = new Soldier(pos);
soldier.speak('무슨 일입니까');
soldier.speak('왜요');
});
에러 버블링
function func1 () {
throw new Error('에러');
}
function func2 () {
func1();
}
function func3 () {
func2();
}
function func4 () {
try {
func3();
} catch (e) {
console.error(e);
}
console.log('실행완료');
}
func4();
전원집합 회사 에러코드
function func1 (e) { // 사원
try {
if (e) { throw e }
console.log('저 가 봐도 되죠?');
console.log('- - - - - - - - - -');
} catch (e) {
if (e instanceof SyntaxError) {
console.error('저 이건 알아요!', e);
console.log('- - - - - - - - - -');
return;
}
console.log('대리님, 이거 뭐에요?');
throw e; // 💡 처리하지 못하는 에러는 윗선으로 던짐
}
}
function func2 (e) { // 대리
try {
func1(e);
} catch (e) {
if (e instanceof TypeError) {
console.error('내가 할 테니 가봐요.', e);
console.log('- - - - - - - - - -');
return;
}
console.log('부장님, 이건 제 선에서 안 되겠습니다.');
throw e;
}
}
function func3 (e) { // 부장
try {
func2(e);
} catch (e) {
if (e instanceof ReferenceError) {
console.error('잘 하자, 응?', e);
console.log('- - - - - - - - - -');
return;
}
console.log('사장님, 이것 좀 보셔야겠습니다.');
throw e;
}
}
function func4 (e) { // 사장
try {
func3(e);
} catch (e) {
console.error('전원 집합.', e);
}
}
// func4();
// func4(new SyntaxError());
//
func4(new TypeError());
// func4(new ReferenceError);
//
// func4(new RangeError);
댓글 영역