try ~ catch

강동휘·2022년 11월 12일
0

code-camp

목록 보기
7/22

mutation이 항상 성공하는 것은 아니다.

Backend 컴퓨터에 문제가 발생할 수도 있고, 내가 수정하려는 게시물이 갑자기 삭제가 되는 바람에 수정에 문제가 발생하는 등 여러가지 실패 가능성이 있다.

따라서, 우리는 성공에 대한 처리, 실패에 대한 처리를 나누어 작업해야 한다.

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

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

그래서 try catch가 뭐야?

아무리 프로그래밍에 능한 사람이더라도 에러가 있는 스크립트를 작성할 수 있다. 원인은 아마도 실수, 예상치 못한 사용자 입력, 잘못된 서버 응답 등의 수천만 가지 이유 때문일 이며,
에러가 발생하면 스크립트는 ‘죽고’(즉시 중단되고), 콘솔에 에러가 출력됩니다.

그러나 try..catch 문법을 사용하면 스크립트가 죽는 걸 방지하고, 에러를 ‘잡아서(catch)’ 더 합당한 무언가를 할 수 있게 된다.

예제


try {

  // 코드...1.
#### 	//2.에러가 없다면 try 즉시 실행 catch 블록은 건너 뛰게 된다.
} catch (err) {

  // 에러 핸들링
//3.에러가 있다면, try 안 코드의 실행이 중단되고, catch(err) 블록으로 제어 흐름이 넘어갑니다. 변수 err(아무 이름이나 사용 가능)는 무슨 일이 일어났는지에 대한 설명이 담긴 에러 객체를 포함한다.
}

1.먼저, try {...} 안의 코드가 실행
2.에러가 없다면, try 안의 마지막 줄까지 실행되고, catch 블록은 건너뛴다.
3.에러가 있다면, try 안 코드의 실행이 중단되고, catch(err) 블록으로 제어 흐름이 넘어간다. 변수 err(아무 이름이나 사용 가능 우리는 주로 error사용)는 무슨 일이 일어났는지에 대한 설명이 담긴 에러 객체를 포함한다.

error는 함수인가?🔥

error생성자 함수는 에러 객체를 생선한다. error 생성자 함수에는 에러를 상세히 걸명하는 에러 메세지를 인수로 전달할 수 있다!!

profile
👨🏻‍💻프론트엔드에서 pm으로 커리어 전향을 희망하는

0개의 댓글