[내배캠 앱창업] Day 13 - 예외 처리

쏘쏠·2025년 12월 10일

1. 오늘 배운 것

예외 처리, 오류 이해, 그리고 라이브러리 사용법을 학습했다.

2. 예외(Exception) 처리

✔ 예외란?

프로그램 실행 중 발생하는 “비정상적인 상황”

처리하지 않으면 프로그램이 멈추지만,
try–catch 구조로 적절히 처리하면 프로그램은 계속 정상 실행됨.

✔ Dart 기본 예외 종류들

FormatException – 문자열을 숫자로 변환할 때처럼 데이터 형식이 잘못된 경우

IOException – 파일/입출력 관련 문제

TimeoutException – 비동기 작업이 일정 시간 안에 끝나지 않을 때

DeferredLoadException – 지연 로딩된 라이브러리 로드 실패 등

→ Dart가 이미 여러 상황을 대비한 예외 타입을 만들어둬서 필요할 때 바로 가져다 쓰는 구조.

3. 커스텀 예외 만들기

프로젝트 상황에 맞는 예외가 필요할 때는
Exception 클래스를 상속해서 직접 만들 수 있다.

예:

class AgeException implements Exception {
  final String? message;

  AgeException(this.message);

  @override
  String toString() => message ?? 'AgeException 발생!';
}

4. try / catch / on / finally

✔ try

예외가 발생할 수 있는 코드를 넣는 블록

✔ catch

발생한 예외를 처리하는 블록
여러 개 사용 가능

✔ on

특정 타입의 예외만 골라서 처리할 때 사용

예:

try {
  int.parse("abc");
} on FormatException catch (e) {
  print("형식 오류!");
} catch (e) {
  print("그 외 오류");
}

✔ finally

예외 발생 여부와 관계없이 무조건 실행

예: 파일 닫기, 네트워크 종료, DB 연결 종료 등 cleanup 용도로 사용

5. throw – 예외를 의도적으로 발생시키기

예:

void checkAge(int age) {
  if (age < 0) throw Exception("나이는 음수가 될 수 없습니다.");
}

상황을 확실히 차단할 때 사용.

6. 오류(Error)

예외와 다르게 Error는 시스템 레벨 문제, 즉:

개발자가 미리 방지하기 어렵고

발생하면 프로그램을 계속 돌릴 수 없는 경우가 대부분

✔ 주요 Error 예시

RangeError / IndexError

StackOverflowError

OutOfMemoryError

TypeError

UnsupportedError

AssertionError

에러는 try-catch로 잡는 개념이 아니라, 애초에 발생하지 않도록 설계하는 것이 핵심.

7. 라이브러리 사용하기

✔ 라이브러리란?

자주 쓰는 기능들을 미리 코드로 만들어 놓은 “도구 모음집”
→ import로 불러오기만 하면 바로 사용 가능.

✔ Dart SDK 기본 라이브러리

dart:core – 기본 타입, 컬렉션(자동 포함)

dart:math – sqrt, pow, pi, Random()

dart:async – Future, Stream

dart:convert – JSON 변환

dart:io – 파일/네트워크

dart:html – 웹 전용

✔ 외부 패키지(Pub.dev)

shared_preferences

dio

google_fonts

firebase_core

url_launcher 등

✔ import 옵션

import 'dart:math';
import 'package:http/http.dart' as http;
import 'package:lib/lib.dart' show A, B;
import 'package:lib/lib.dart' hide C;

✔ deferred loading (Web 전용)

필요할 때만 라이브러리를 로딩해서 성능을 높이는 방식

내일도 화이팅!

profile
Flutter 앱창업 일기장

0개의 댓글