[flutter] 플러터에서 네트워크 에러 처리 방법

Flutter는 크로스 플랫폼 모바일 애플리케이션 개발을 위한 프레임워크로, 네트워크 연결 문제에 직면할 수 있습니다. 이러한 문제에 대응하기 위해, 다양한 방법을 사용하여 네트워크 에러를 처리할 수 있습니다. 이 포스트에서는 가장 일반적인 네트워크 에러 처리 방법에 대해 알아보겠습니다.

1. try-catch 문 사용

가장 간단한 네트워크 에러 처리 방법은 try-catch 문을 사용하는 것입니다. try-catch 문은 예외를 처리하기 위한 파트너로 작동하며, 네트워크 요청이 실패할 경우 예외가 발생하는 것을 감지할 수 있습니다. 아래는 try-catch 문을 사용한 예제입니다.

try {
  // 네트워크 요청
  await http.get(url);
} catch (e) {
  // 에러 처리
  print('네트워크 에러: $e');
}

2. Dio 패키지 사용

Dio는 Flutter에서 주로 사용되는 HTTP 클라이언트 패키지로, 다양한 기능과 에러 처리 옵션을 제공합니다. Dio를 사용하면 보다 효과적으로 네트워크 에러를 처리할 수 있습니다. 아래는 Dio를 사용하여 네트워크 에러를 처리하는 예제입니다.

try {
  // Dio 인스턴스 생성
  Dio dio = Dio();
  
  // 네트워크 요청
  await dio.get(url);
} catch (e) {
  // 에러 처리
  print('네트워크 에러: $e');
}

3. ErrorInterceptor 사용

Dio는 ErrorInterceptor를 사용하여 네트워크 에러를 전역적으로 처리할 수 있는 기능을 제공합니다. ErrorInterceptor는 모든 네트워크 요청에 대해 호출되며, 에러를 처리하는 로직을 구현할 수 있습니다. 아래는 ErrorInterceptor를 사용한 코드 예제입니다.

Dio dio = Dio();
dio.interceptors.add(
  InterceptorsWrapper(
    onError: (error) {
      // 에러 처리
      print('네트워크 에러: $error');
      return error;
    },
  ),
);

// 네트워크 요청
await dio.get(url);

4. Connectivity 패키지 사용

Connectivity 패키지는 디바이스의 네트워크 상태를 감지하고, 네트워크 연결 여부에 따라 동적으로 에러 처리를 조정할 수 있는 기능을 제공합니다. 이를 사용하여 네트워크 연결 상태를 모니터링하고, 네트워크 에러에 대한 필요한 조치를 취할 수 있습니다. 아래는 Connectivity 패키지를 사용한 예제입니다.

import 'package:connectivity/connectivity.dart';

// 네트워크 연결 상태 확인
var connectivityResult = await (Connectivity().checkConnectivity());

if (connectivityResult == ConnectivityResult.none) {
  // 네트워크 연결 오류 처리
  print('네트워크 연결 상태가 없습니다.');
} else {
  // 네트워크 요청
  await http.get(url);
}

위에서 소개한 방법을 사용하여 네트워크 에러를 처리할 수 있습니다. 상황에 따라 가장 적합한 방법을 선택하여 네트워크 에러를 처리하는 로직을 구현하면 됩니다.