CS

에러핸들링

힛해 2024. 8. 30. 00:11
728x90

https://file.notion.so/f/f/b5b4ae05-4e24-4e78-8c85-e35f29d4e224/fa23040a-3993-4afe-b1d4-c753e56fa706/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%97%90%EC%84%9C%EC%9D%98_%EC%97%90%EB%9F%AC%ED%95%B8%EB%93%A4%EB%A7%81.pdf?table=block&id=32126906-b98e-41f5-bd3a-df5fe4a217c8&spaceId=b5b4ae05-4e24-4e78-8c85-e35f29d4e224&expirationTimestamp=1725062400000&signature=Onzqf1wFeHwa2_F0GTf4GugL8kcPPBv46nkq4xSRQxc&downloadName=%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%97%90%EC%84%9C%EC%9D%98+%EC%97%90%EB%9F%AC%ED%95%B8%EB%93%A4%EB%A7%81.pdf

 

 

프론트엔드에서의 에러 핸들링

프론트엔드에서 에러 핸들링은 사용자 경험을 향상시키고, 애플리케이션의 안정성을 유지하는 데 중요한 역할을 한다. 에러 핸들링을 통해 애플리케이션의 오류를 감지하고, 적절히 처리하며, 사용자에게 유용한 정보를 제공할 수 있다.


프론트엔드 에러 핸들링의 주요 요소

1. 에러 감지

  • 폼 유효성 검사: 사용자가 폼을 제출할 때, 입력 값이 유효한지 확인하고, 유효하지 않은 경우 오류 메시지를 표시한다.
  • API 호출 오류: 서버와의 통신 시 발생할 수 있는 오류를 감지하고, 이를 처리하는 로직을 구현한다. 예를 들어, 네트워크 오류, 서버 오류, 잘못된 요청 등이다.
  • 예외 처리: JavaScript 코드에서 예외가 발생할 수 있는 지점을 식별하고, 이를 try-catch 블록을 사용하여 처리한다.

2. 에러 처리

  • 사용자에게 오류 메시지 표시: 사용자가 이해할 수 있는 형태로 오류 메시지를 제공한다. 예를 들어, "서버와의 연결에 실패했습니다. 다시 시도해 주세요."와 같은 메시지다.
  • 오류 로깅: 발생한 오류를 로깅하여 추후 분석할 수 있도록 한다. 예를 들어, Sentry, LogRocket과 같은 도구를 사용하여 오류를 기록하고 모니터링한다.
  • 재시도 로직: 네트워크 오류 등 일시적인 문제에 대해 재시도 로직을 구현하여 사용자가 계속해서 애플리케이션을 사용할 수 있도록 한다.

3. 사용자 경험 개선

  • 대체 콘텐츠 제공: 에러 발생 시 사용자가 계속해서 유용한 정보를 얻을 수 있도록 대체 콘텐츠를 제공한다. 예를 들어, 이미지 로딩 실패 시 기본 이미지를 보여준다.
  • 비동기 처리: 비동기 작업이 실패할 경우, 사용자에게 현재 작업이 실패했음을 알리고, 다시 시도하거나 다른 작업을 수행할 수 있는 옵션을 제공한다.
  • 기본값 및 실패 대처: 사용자가 입력할 때 실수로 잘못된 값을 입력하거나 필수 값을 입력하지 않았을 때, 기본값을 설정하거나 적절한 대처 방법을 제공한다.

에러 핸들링 구현 방법

1. 폼 유효성 검사

  • HTML5의 기본 폼 검증 기능을 사용하거나, JavaScript를 이용해 커스텀 유효성 검사를 구현한다.
  • 예를 들어, React에서는 react-hook-form이나 Formik과 같은 라이브러리를 사용할 수 있다.

2. API 호출 에러 처리

  • Axios나 Fetch API를 사용할 때 .catch() 메서드를 통해 오류를 처리한다.
  • 예를 들어:
javascript
axios.get('/api/data')
  .then(response => {
    // 성공적인 응답 처리
  })
  .catch(error => {
    // 오류 처리
    console.error('API 호출 오류:', error);
    alert('데이터를 가져오는 데 실패했습니다.');
  });

3. 예외 처리

  • try-catch 블록을 사용하여 예외를 처리하고, 사용자에게 알림을 제공한다.
  • 예를 들어:
javascript
try {
  // 위험한 코드 실행
} catch (error) {
  console.error('오류 발생:', error);
  alert('작업 중 오류가 발생했습니다.');
}

4. 오류 로깅

  • Sentry, LogRocket 등과 같은 도구를 활용하여 오류를 로깅하고 모니터링한다.
  • 예를 들어:
javascript
import * as Sentry from '@sentry/react';

Sentry.init({ dsn: 'https://your-dsn@sentry.io/your-project-id' });

try {
  // 위험한 코드 실행
} catch (error) {
  Sentry.captureException(error);
  alert('작업 중 오류가 발생했습니다.');
}

결론

프론트엔드에서의 에러 핸들링은 사용자 경험을 유지하고 애플리케이션의 안정성을 보장하는 데 필수적이다. 에러 감지, 처리, 사용자 경험 개선을 통해 사용자가 오류 상황에서도 원활하게 애플리케이션을 사용할 수 있도록 해야 한다.