[flutter] 플러터에서의 에러 및 예외 처리 방법

플러터는 현대적이고 신뢰성 있는 모바일 애플리케이션 개발을 위한 인기있는 프레임워크입니다. 하지만 개발 중에는 예기치 않은 에러와 예외 상황에 직면할 수 있습니다. 이러한 상황을 처리하는 방법을 알고 있으면 애플리케이션의 안정성을 높일 수 있습니다. 이번 글에서는 플러터에서의 에러 및 예외 처리 방법을 알아보겠습니다.

1. try-catch 문 사용하기

가장 기본적인 예외 처리 방법은 try-catch 문을 사용하는 것입니다. try 블록 내에서 예외가 발생할 수 있는 코드를 작성하고, catch 블록에서 예외를 처리하는 코드를 작성합니다.

try {
  // 예외가 발생할 수 있는 코드
} catch (e) {
  // 예외 처리 코드
}

예를 들어, API 요청 중에 예외가 발생했을 때 사용자에게 오류 메시지를 표시하고자 한다면 다음과 같이 코드를 작성할 수 있습니다.

try {
  // API 요청 코드
} catch (e) {
  showDialog(
    context: context,
    builder: (context) => AlertDialog(
      title: Text('오류'),
      content: Text('API 요청 중 오류가 발생했습니다.'),
      actions: [
        FlatButton(
          onPressed: () => Navigator.pop(context),
          child: Text('확인'),
        ),
      ],
    ),
  );
}

2. async/await 및 try-catch 사용하기

플러터에서 비동기 작업을 처리할 때는 async/await를 사용합니다. 이 경우에도 try-catch 문을 함께 사용하여 비동기 코드에서 발생하는 예외를 처리할 수 있습니다.

Future<void> fetchData() async {
  try {
    // 비동기 작업 코드
  } catch (e) {
    // 예외 처리 코드
  }
}

예를 들어, 특정 데이터를 가져오는 비동기 함수에서 예외가 발생했을 때 사용자에게 오류 메시지를 표시하고자 한다면 다음과 같이 코드를 작성할 수 있습니다.

Future<void> fetchData() async {
  try {
    // 데이터 가져오기
  } catch (e) {
    showDialog(
      context: context,
      builder: (context) => AlertDialog(
        title: Text('오류'),
        content: Text('데이터를 가져오는 중 오류가 발생했습니다.'),
        actions: [
          FlatButton(
            onPressed: () => Navigator.pop(context),
            child: Text('확인'),
          ),
        ],
      ),
    );
  }
}

3. onError 콜백 사용하기

플러터에서는 예외 처리를 위해 onError 콜백을 사용하는 방법도 있습니다. 이러한 콜백을 사용하면 예외가 발생할 때마다 특정 함수를 호출하여 예외를 처리할 수 있습니다.

Future fetchData() {
  return Future.error('에러 메시지');
}

void handleError(dynamic error) {
  // 예외 처리 코드
}

fetchData().catchError(handleError);

이와 같이 catchError 메소드를 사용하여 예외가 발생할 때마다 handleError 함수를 호출하고, handleError 함수에서 예외를 처리하는 코드를 작성할 수 있습니다.

4. 에러 경계선 이용하기

마지막으로, 에러 경계선을 이용하여 예외를 처리하는 방법입니다. ErrorBoundary 클래스를 이용하여 특정 위젯의 예외를 감지하고 처리할 수 있습니다.

ErrorBoundary(
  onCatch: (error, stackTrace) {
    // 예외 처리 코드
  },
  child: MyWidget(),
)

위와 같이 ErrorBoundary 위젯으로 감싸면, MyWidget에서 발생하는 예외를 onCatch 콜백 함수로 받아올 수 있습니다. onCatch 함수에서는 예외를 처리하는 코드를 작성할 수 있습니다.

결론

이번 글에서는 플러터에서의 에러 및 예외 처리 방법에 대해 알아보았습니다. try-catch 문을 사용하거나 async/await를 사용하여 비동기 작업에서의 예외를 처리할 수 있습니다. 또한 onError 콜백을 사용하거나 에러 경계선을 이용하여 예외를 처리할 수도 있습니다. 이를 통해 플러터 애플리케이션의 안정성을 향상시킬 수 있습니다.

더 자세한 정보를 원하신다면, 다음 문서를 참조해주세요: