Exception

Jung taeWoong·2021년 5월 8일
1

typescript

목록 보기
6/11
post-thumbnail

Exception

  • 예상하지 못한 에러를 의미
  • 에러처리를 잘해두면 안정성과 유지보수성을 높일수 있다.
  • 예상이 가능한 Error 인지 예상할 수 없는 Exception 인지 구분
    • Error: 예상할 수 있는 애플리케이션 내부에서 발생할 수 있는 error case
    • Exception: 예상할 수 없는 상태

Error(Exception) Handling

1. try-catch-finally

try

  • 에러가 발생할 수 있는 정확한 구간에서 try를 이용해 감싸준다.
  • try 블록에 모든 코드를 넣어 더럽히기 보다는 에러가 발생할수 있는 부분만 감싸는 것이 포인트

catch

  • 에러가 발생하면 catch 블록으로 이동하여 동작
  • 인자로 error 객체를 받는다.
  • try문의 에러를 잡았으므로 코드 동작이 죽지 않는다.

fianlly

  • try-catch 절에서 항상 무조건 호출되는 블록
  • try 코드와 연관되있거나 마무리 해야 하는 코드들을 finally에 작성
  • finally 생략시 catch문에서 return 되거나 다른 에러가 발생할 경우 다음 로직이 실행되지 않는다.

2. 우아한 핸들링

  • 에러가 발생했을 때 내가 정확하게 처리할 수 있는 것이 아니라면 catch 하지 않는 것이 좋다.
  • try-catch 핸들링을 할 때 의미 있는 처리를 하는 곳을 찾아 그곳에서 catch를 한다.

3. Error State

  • TypeScript에서 구현된 catch는 어떠한 타입정보도 전달되지 않아 instanceOf 키워드를 사용하여 에러를 구분할 수 없다.
  • 코드를 작성할 때 예상할 수 있는 state(성공/실패)를 타입으로 정의해서 사용하면 예측가능하고 깔끔한 코드를 작성할 수 있다.
  • 예상할 수 있는 모든 에러 케이스에 대해 따로 Error State를 만들어 두면 try-catch를 사용할 필요 없다.
 type NetworkErrorState = {
    result: 'fali';
    reason: 'offline' | 'down' | 'timeout';
  }

  type SuccessState = {
    result: 'success';
  }

  type ResultState = SuccessState | NetworkErrorState;

  class NetworkClient {
    tryConnect(): ResultState {}
  }
profile
Front-End 😲

0개의 댓글