본문 바로가기
Javascript

Javascript - Error(try, catch, finally)

by DGK 2021. 10. 1.

 

인프런 자바스크립트 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

Error(try, catch, finally)

 

  • try-catch
<기본 개념>
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)

 

 

  • try-catch-finally
<기본 개념>
//에러가 발생한 경우

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{ }가 실행된다.

'Javascript' 카테고리의 다른 글

Javascript - 정규식(RegExp)  (0) 2021.10.02
Javascript - Strict Mode  (0) 2021.10.01
Javascript - 클래스(Class)  (0) 2021.10.01
Javascript - 모듈(Module)  (0) 2021.10.01
Javascript - Async/Await  (0) 2021.10.01

댓글