Try Catch

박경찬·2022년 3월 22일
0

Try Catch

Mdn공식 문서에 따르면 이렇게 나와있다

try...catch 문은 실행할 코드블럭을 표시하고 예외(exception)가 발생(throw)할 경우의 응답을 지정합니다.

문법부터 알아봐야 겠다.

try {
  try_statements
}
[catch (exception_var) {
  catch_statements
}]
[finally {
  finally_statements
}]

try_statements
실행될 부분

catch_statements
try에서 Exception이 발생할시 실행될 블럭

finally_statements
try 선언이 완료된 이후에 실행된 블럭. 이 벌륵은 예외 발생 여부와 상관없이 실행된다.

try {

  alert('try 블록 시작');  // (1) <--

   varibles; // 변수가 선언되지 않아 에러발생

  alert('try end' 여기까지 실행되지 않고 catch 문으로);  // (2)

} catch(err) {

  alert(`에러가 발생했습니다!`); // (3) <--

}

try 문은 중첩 할 수 있다. 내부의 try 문에 catch 블록이 없으면, 둘러싼 try 문의 catch 블록이 입력됩니다.

catch 블록은 복수 , finally 블록은 1개만 정의할수 있다. 또한 catch 와 finally 블록은 어느 한쪽만 정의되어 있으면 문제 없다.

try {
  ****$%#$^#%$&%^*^%*$#$@%#%
} catch(e) {
  alert("유효하지 않은 코드는 자바스크립트 엔진이 코드를 이해할 수 없습다");
}

코드를 읽는 중에 발생하는 에러는 'parse-time 에러’라고 부르는데, 엔진은 이 코드를 이해할 수 없기 때문에 parse-time 에러는 코드 안에서 복구가 불가능합니다.
try..catch는 유효한 코드에서 발생하는 에러만 처리할 수 있습니다. 이런 에러를 ‘런타임 에러(runtime error)’ 혹은 '예외(exception)'라고 부릅니다.

예시2.

try {
     await createBoard({
       variables: {
           aaa: "훈이",
           bbb: "1234",
           ccc: "안녕하세요 훈이에요",
           ddd: "반갑습니다"
        }
    })

} catch(error) {
	alert(error.message)     // 경고창(실패했습니다.)  ==>  백엔드 개발자가 보내주는 실패 메시지
} finally {
	// 성공, 실패 여부와 상관없이 무조건 마지막에 실행되는 부분
	// 필요없다면 생략 가능
}

0개의 댓글

관련 채용 정보