Never be entirely idle; but either be reading, or writing, or praying or meditating or endeavoring something for the public good.호기심
< 목차 >
1. 정의
2. 왜 에러 핸들링을 해야할까?
3. 에러 핸들링
4. try - catch
1. 정의
- 에러(오류) : 하드웨어나 소프트웨어가 본래의 동작을 수행할 수 없는 상태
- 컴파일 에러 : 코드가 컴파일(해석할 수 있는 언어로 변경되는 과정)되는 과정 중 발생하는 에러
- 런타임 에러 : 프로그램이 동작하는 과정 중 발생하는 에러
- 예외 : 일반적으로 런타임 에러와 관련된 예상하기 어렵거나 불가능한 이슈
- 에러 핸들링 : 예외로 인해 발생한 에러 객체를 다루는 것
일반적으로 자바스크립트는 모두 런타임에서의 에러다.
2. 왜 에러 핸들링을 해야할까?
- 자바스크립트는 에러가 발생하면, 작업이 즉시 중단된다. (더 이상 스크립트를 읽어나가지 않는다.)
- 스크립트가 중단되면, 개발자 도구를 통해 확인하지 않는 이상, 사용자는 현재 상태를 알 수 없다.
- 사용자에게 에러 상황을 알려주고, 에러에 대해 적절한 안내를 해주기 위해 필요하다.
3. 에러 핸들링
즉, 에러 핸들링은 사용자가 긍정적인 경험을 할 수 있도록 도와주는 역할을 한다.
발생한 에러에 대해, 사용자에게 얼마나 적절한 피드백을 제시하느냐가 좋은 에러 핸들링이라고 할 수 있겠다.
사용자를 생각하는 에러 메시지를 위해 아래 두가지를 고려하자.
- 문제 발생과 왜 그 문제가 발생했는지 안내해준다.
- 문제에 대한 해결책을 제시한다.
예상 가능한 에러
1. 잘못된 입력값이 전달되는 경우
2. 인증받지 못한 경로/값을 받는 경우
3. 존재하지 않는 페이지로 접근하는 경우
4. 그 외 미리 설정해놓은 API응답 에러
예상 가능한 에러는 그 상황에 맞게 사용자가 적절한 조치를 할 수 있도록 안내하고 유도해야한다.



예상 불가능한 에러
1. 갑작스러운 사용량 증가로 네트워크가 불안정한 경우
2. 서버상태가 불안정한 경우(5xx 에러)
예상 불가능한 에러는 일시적인 에러로 인해 발생할 수도, 치명적인 이유에 의해 발생할 수도 있다.
사용자에게 파악할 수 없는 원인(혹은 일시적인 문제)임을 알리고, 후속 조치를 할 수 있도록 알려야 한다.
'일시적인 오류로 인해 불러오지 못했습니다. 잠시 후 다시 시도해주세요.'
'알 수 없는 오류가 발생했습니다. 같은 상황이 반복되는 경우 고객센터로 문의해주세요. 고객센터 : 070-0000-0000'
4. try - catch(err)
try - catch(err)를 통해, 런타임 에러 핸들링을 할 수 있다.
- try {...} 안의 코드 실행
- 에러가 없는 경우, try 안의 코드가 전부 실행되고, catch 블록은 건너 뜀
- 에러가 있는 경우, try 안 코드의 실행이 중단되고, catch 블록 안의 코드가 실행 (이때, catch는 에러 객체를 포함)
- 에러 객체(err) : 무슨 일이 일어났는지에 대한 설명이 담겨 있다. (변수명은 자유)
- 에러 객체는 두 가지의 주요 프로퍼티를 가진다. (name, message)
console.log(err.name);
console.log(err.message);
4-1. finally
finally는 에러의 발생 여부와 관계없이 try절 이후, 혹은 catch절 이후 실행된다.
try {
// 에러를 검사할 코드 작성
...
} catch(err) {
// 에러가 발생했을 경우 코드 작성
...
} finally {
// 모든 상황에서 실행할 코드 작성
...
}
'Development' 카테고리의 다른 글
| 도서 정리 프로젝트(4) (0) | 2022.06.26 |
|---|---|
| 도서 정리 프로젝트(3) (0) | 2022.06.13 |
| 도서 정리 프로젝트(2) (0) | 2022.06.12 |
| 도서 정리 프로젝트(1) (0) | 2022.06.11 |
| HTTP 그리고 HTTPS (0) | 2022.04.09 |
