Skip to content

Commit bb1a54d

Browse files
[프라미스와 에러 핸들링] 보완
1 parent f2195d2 commit bb1a54d

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

1-js/11-async/04-promise-error-handling/article.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
프라미스 체인은 에러를 잘 처리합니다. 프라미스가 거부되면 제어 흐름이 제일 가까운 rejection 핸들러로 넘어갑니다. 이는 실무에서 아주 유용하게 사용됩니다.
55

6-
`fetch`에 넘겨주는 URL(없는 주소)이 잘못된 경우를 살펴봅시다. 에러가 발생하지만 `.catch`에서 이를 처리할 수 있습니다.
6+
존재하지 않는 주소를 `fetch`에 넘겨주는 예시를 살펴봅시다. 에러가 발생하지만 `.catch`를 사용해 에러를 처리할 수 있습니다.
77

88
```js run
99
*!*
@@ -15,7 +15,7 @@ fetch('https://no-such-server.blabla') // 거부
1515

1616
위 예시를 통해 알 수 있듯이 `.catch`는 바로 나올 필요가 없습니다. 하나 혹은 여러 개의 `.then` 뒤에 올 수 있습니다.
1717

18-
이번엔 사이트에는 아무런 문제가 없지만, 응답으로 받은 JSON의 형식이 잘못된 경우를 살펴보겠습니다. 체인 끝에 `.catch`붙이면 에러 전부를 간단하게 잡을 수 있습니다.
18+
이번엔 사이트에는 아무런 문제가 없지만, 응답으로 받은 JSON의 형식이 잘못된 경우를 살펴보겠습니다. 가장 쉬운 에러 처리 방법은 체인 끝에 `.catch`붙이는 것입니다.
1919

2020
```js run
2121
fetch('/article/promise-chaining/user.json')
@@ -38,9 +38,9 @@ fetch('/article/promise-chaining/user.json')
3838
*/!*
3939
```
4040

41-
정상적인 경우라면, 예시를 실행했을 때 `.catch`는 절대 트리거 되지 않습니다. 그런데 네트워크 문제, 잘못된 형식의 JSON 등으로 인해 프라미스 중 하나라도 거부되면 `.catch`에서 에러를 잡게 됩니다.
41+
정상적인 경우라면 `.catch`는 절대 트리거 되지 않습니다. 그런데 네트워크 문제, 잘못된 형식의 JSON 등으로 인해 프라미스 중 하나라도 거부되면 `.catch`에서 에러를 잡게 됩니다.
4242

43-
## 암시적 try..catch
43+
## 암시적 try...catch
4444

4545
프라미스 executor와 프라미스 핸들러 코드 주위엔 '보이지 않는 `try..catch`'가 있습니다. 예외가 발생하면 암시적 `try..catch`에서 예외를 잡고, 이를 reject처럼 다룹니다.
4646

@@ -199,6 +199,6 @@ Node.js같은 기타 호스트 환경에도 처리하지 못한 에러를 다루
199199
## 요약
200200

201201
- `.catch` 는 프라미스에서 발생한 모든 에러를 다룹니다. `reject()`가 호출되거나 에러가 던져지면 `.catch`에서 이를 처리합니다.
202-
- `.catch`는 에러를 처리하고 싶은 지점에 정확히 위치시켜야 합니다. 물론 어떻게 에러를 처리할지 알고 있어야 하죠. 핸들러 에선 에러를 분석하고(커스텀 에러 클래스가 이때 도움이 됩니다) 알 수 없는 에러(프로그래밍 실수로 발생한 에러일 확률이 높습니다)는 다시 던질 수 있습니다.
202+
- `.catch`는 에러를 처리하고 싶은 지점에 정확히 위치시켜야 합니다. 물론 어떻게 에러를 처리할지 알고 있어야 하죠. 핸들러에선 에러를 분석하고(커스텀 에러 클래스가 이때 도움이 됩니다) 알 수 없는 에러(프로그래밍 실수로 발생한 에러일 확률이 높습니다)는 다시 던질 수 있습니다.
203203
- 에러 발생 시, 회복할 방법이 없다면 `.catch`를 사용하지 않아도 괜찮습니다.
204-
- `unhandledrejection` 이벤트 핸들러를 사용해 처리되지 않은 에러를 추적하고, 이를 사용자(혹은 서버에)에게 알려서(브라우저 환경에선 `unhandledrejection`을, 다른 환경에선 유사한 핸들러를 사용). 애플리케이션이 아무런 설명도 없이 '그냥 죽는걸' 방지합시다.
204+
- `unhandledrejection` 이벤트 핸들러를 사용해 처리되지 않은 에러를 추적하고, 이를 사용자(혹은 서버에)에게 알려서 애플리케이션이 아무런 설명도 없이 '그냥 죽는걸' 방지합시다. 브라우저 환경에선 예방에 `unhandledrejection`을, 다른 환경에선 유사한 핸들러를 사용할 수 있습니다.

0 commit comments

Comments
 (0)