프로그램을 실해하는 동안 문제가 발생하면 자동으로 프로그램이 중단된다.
이렇게 발생한 오류를 예외(Exception)이라고 한다.
이러한 오류를 대처할 수 있게하는 것이 예외처리(Exception Handling)라고 한다.
예외처리에는 기본 예외처리와 고급 예외처리가 있다.
기본 예외 처리
function callTenTimes(callback){
if (let i=0; i<3; i++){
callback();
}
}
//정상진행
callTenTimes(function(){
console.log('안녕하세요');
});
//예외 발생 시키기,
callTenTimes();
실행 결과
안녕하세요
안녕하세요
안녕하세요
에러뿜뿜
//undefined 자료형을 일반적인 객체나 함수처럼 다루었기 때문에 예외가 발생한다.
//예외처리
function callTenTimes(callback){
if (typeof(callback) == "function"){ //callback이 함수 자료형일 때만 호출됨
for(let i=0;i<3;i++){
callback();
}
}
else{
console.log('매개변수 callback을 함수로 지정해주세요.');
}
}
//정상진행
callTenTimes(function(){
console.log('안녕하세요');
});
//예외 발생 시키기
callTenTimes();
실행결과
안녕하세요
안녕하세요
안녕하세요
매개변수 callback을 함수로 지정해주세요.
고급 예외 처리
고급 예외 처리는 try, catch, finally로 예외를 처리한다.
기본적인 형태는 아래와 같다.
try{
//예외 발생하면
}catch(exception){
//여기서 처리
}finally{
//여기 내용은 예외와 상관없이 무조건 실행
}
//catch와 finally는 필요가 없다면 생략할 수 있다.
배열의 크기를 음수로 잡아 예외 발생
const arr = new Array(-2000)
실행결과
에러뿜뿜
try{
const arr = new Array(-2000)
}catch(exception){
console.log(`${exception.name} 예외가 발생했습니다.);
}finally{
console.log('finally 구문이 살행되었습니다.')
}
실행 결과
RangeError 예외가 발생했습니다.
finally 구문이 실행 되었습니다.