인프런 자바스크립트 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
Error(try, catch, finally)
<기본 개념>
try {
consol.log("log메시지"); //error code
}catch(err) {
console.log(err.name); // 결과 : ReferenceError
console.log(err.message); // 결과 : consol is not defined
}
console.log("log 정상 메시지"); // 결과 : log 정상 메시지
//try{ }에 에러가 발생하면, catch{ }로 가서 코드를 실행한다.
//만약 try{ }에 에러가 없다면, 그대로 try{ }의 코드가 실행된다.
//원래 위의 code에서 에러가 발생하면, 그 다음 code는 실행되지 않는다.
//하지만 try-catch문을 사용할 경우에는 위의 code에서 에러가 발생해도,
//에러의 상태를 알려준 후에 그 다음 code를 실행한다.
//즉, 에러가 발생할 수 있는 code를 try-catch문을 통해 작성할 경우,
//해당 부분에서 에러가 발생하더라도 전체 code가 실행되지 않는 문제를 방지할 수 있다.
<참고>
var x = "";
try {
if(x == "") throw "empty";
}catch(err) {
console.log(`x is ${err}`);
}
//throw를 사용하면 try{ }에서 강제로 에러 처리를 하여,
//곧 바로 catch{ }이 실행되도록 한다.
//이 경우, catch{ }의 parameter에 문자열로 원하는 메시지를 줄 수 있다.(ex empty)
<기본 개념>
//에러가 발생한 경우
var x = "";
try {
if(x == "") throw "empty"; //에러 발생(x가 ""이기 때문) : throw 사용
var y = x + 3;
console.log(y);
}catch(err) {
console.log(`x is ${err}`);
}finally {
console.log("에러의 발생여부와 관계없이 마지막에 반드시 실행됨")
}
// 결과 :
//x is empty
//에러의 발생여부와 관계없이 마지막에 반드시 실행됨
//에러가 발생하지 않는 경우
var x = 5;
try {
if(x == "") throw "empty"; //에러 발생X(x가 5이기 때문) : throw 사용
var y = x + 3;
console.log(y);
}catch(err) {
console.log(`x is ${err}`);
}finally {
console.log("에러의 발생여부와 관계없이 마지막에 반드시 실행됨")
}
// 결과 :
//8
//에러의 발생여부와 관계없이 마지막에 반드시 실행됨
//정리
//finally{ }은 try{ }에서 에러가 발생하는 여부와 관계없이,
//마지막에 무조건 실행된다.
//즉, try{ }에서 에러가 발생하여 throw를 통해 catch{ }가 실행이 되든,
//try{ }에서 에러가 발생하지 않아 그대로 try{ }가 실행되든 상관없이,
//마지막에는 반드시 finally{ }가 실행된다.
댓글