예외처리 Try...Catch

윤성해·2023년 3월 19일
0

공부하기

목록 보기
7/12
post-thumbnail

1. Try...Catch

async & await에서 예외를 처리하는 방법은 바로 try catch입니다. async에서는 catch {} 를 사용하고, 프로미스에서는 에러 처리를 위해 .catch()를 사용합니다.

코드를 실행하다가 발생한 네트워크 통신 오류뿐만 아니라 간단한 타입 오류 등의 일반적인 오류까지도 catch로 잡아낼 수 있습니다. 발견된 에러는 error 객체에 담기기 때문에 에러의 유형에 맞게 에러 코드를 처리해주시면 됩니다.

❓ 예외처리란
정의 : 프로그램 실행 시 발생할 수 있는 예외에 대비한 코드를 작성하는 것
목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것

2. 기본 문법

try {
>
  // 코드...
>
} catch (err) {
>
  // 에러 핸들링
  • try…catch 동작 알고리즘은 다음과 같습니다.
    1. 먼저, try {...} 안의 코드가 실행됩니다.
    2. 에러가 없다면, try 안의 마지막 줄까지 실행되고, catch 블록은 건너뜁니다.
    3. 에러가 있다면, try 안 코드의 실행이 중단되고, catch(err) 블록으로 제어 흐름이 넘어갑니다. 변수 err(아무 이름이나 사용 가능)는 무슨 일이 일어났는지에 대한 설명이 담긴 에러 객체를 포함합니다.

3. 실습 코드

mutation이 여러가지 이유로 항상 성공하는 것이 아니기때문에,
성공에 대한 처리와 실패에 대한 처리를 나누어서 작업해야 했습니다.

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

추가 주의사항

  • try..catch는 오직 런타임 에러에만 동작합니다.

    코드를 읽는 중에 발생하는 에러는 'parse-time 에러’라고 부르는데, 엔진은 이 코드를 이해할 수 없기 때문에 parse-time 에러는 코드 안에서 복구가 불가능합니다.

try..catch는 유효한 코드에서 발생하는 에러만 처리할 수 있습니다. 이런 에러를 ‘런타임 에러(runtime error)’ 혹은 '예외(exception)'라고 부릅니다.

  • try..catch는 동기적으로 동작합니다.

    setTimeout처럼 ‘스케줄 된(scheduled)’ 코드에서 발생한 예외는 try..catch에서 잡아낼 수 없습니다.

💡 참고자료 , 참고자료

profile
Slow and steady wins the race.

0개의 댓글