학습
Dart 예외 처리 기초
Dart 예외 처리 기초 — 초급
예외 처리 기초
1. 도입 (왜 배워야 하는가)
프로그램은 예상치 못한 상황에 직면할 수 있습니다. 예를 들어, 사용자가 입력한 데이터가 잘못되었거나, 네트워크 연결이 끊겼을 때, 또는 파일을 찾을 수 없는 경우 등입니다. 이러한 상황에서 프로그램이 중단되면 사용자에게 좋지 않은 경험을 제공하게 됩니다.
예외 처리를 사용하면 프로그램이 이러한 예외 상황을 우아하게 처리할 수 있습니다. 적절한 예외 처리를 구현하지 않으면 프로그램이 비정상적으로 종료되거나, 사용자에게 불분명한 오류 메시지를 표시할 위험이 있습니다. 이로 인해 개발자는 문제를 해결하기 어려워지며, 사용자도 불편을 겪게 됩니다.
2. 핵심 개념 설명
예외 처리란 프로그램 실행 중 발생할 수 있는 오류를 관리하는 방법입니다. Dart에서는 try, catch, finally와 같은 키워드를 사용하여 예외를 처리합니다.
- try: 예외가 발생할 가능성이 있는 코드를 감싸는 블록입니다.
- catch: 예외가 발생했을 때 실행되는 코드입니다.
- finally: 예외 발생 여부와 관계없이 항상 실행되는 코드입니다.
관련 용어 정리
| 용어 | 설명 |
|---|---|
| 예외 | 프로그램 실행 중 발생하는 오류 |
| 처리 | 발생한 예외를 해결하는 과정 |
| 오류 | 예외와 유사하지만 프로그램의 비정상 종료를 유발할 수 있는 문제 |
3. 기본 코드 예제
기본적인 예외 처리 방법을 보여주는 예제입니다.
void main() {
try {
int result = 10 ~/ 0; // 0으로 나누기 시도
print(result);
} catch (e) {
print('예외 발생: $e'); // 예외 메시지 출력
} finally {
print('예외 처리 완료'); // 항상 실행
}
}
실행 결과:
예외 발생: IntegerDivisionByZeroException
예외 처리 완료
try 블록에서 10 ~/ 0을 시도합니다. (정수 나눗셈)0으로 나누려 하므로 IntegerDivisionByZeroException 예외가 발생합니다.catch 블록이 실행되어 예외 메시지를 출력합니다.finally 블록이 실행되어 "예외 처리 완료" 메시지를 출력합니다.4. 실전 활용 예제
예외 처리는 실무에서 자주 발생하는 다양한 상황에 적용될 수 있습니다. 아래는 쇼핑몰 장바구니 구현 시 예외 처리의 예입니다.
예제 1: 장바구니에 아이템 추가하기
class ShoppingCart {
List<String> items = [];
void addItem(String item) {
if (item.isEmpty) {
throw Exception('아이템 이름이 비어 있습니다.'); // 예외 발생
}
items.add(item);
print('$item이 장바구니에 추가되었습니다.');
}
}
void main() {
ShoppingCart cart = ShoppingCart();
try {
cart.addItem('사과');
cart.addItem(''); // 빈 아이템 추가 시도
} catch (e) {
print('예외 발생: $e'); // 예외 메시지 출력
}
}
상황 설명: 사용자가 장바구니에 아이템을 추가할 때, 빈 문자열을 추가하려는 경우 예외를 발생시켜 처리합니다.
예제 2: 파일 읽기
import 'dart:io';
void readFile(String filePath) {
try {
String content = File(filePath).readAsStringSync();
print(content);
} catch (e) {
print('파일을 읽는 중 오류 발생: $e'); // 예외 메시지 출력
}
}
void main() {
readFile('존재하지 않는파일.txt'); // 존재하지 않는 파일 읽기 시도
}
상황 설명: 사용자가 입력한 파일 경로가 존재하지 않을 때 파일을 읽는 과정에서 예외를 발생시키고, 이를 처리하여 사용자에게 알립니다.
5. 흔한 실수와 주의사항
실수 1: 예외를 무시하기
try {
int result = 10 ~/ 0;
} catch (e) {
// 예외를 무시함
}
올바른 코드:
try {
int result = 10 ~/ 0;
} catch (e) {
print('예외 발생: $e'); // 예외 메시지를 출력해야 함
}
주의사항: 예외를 무시하면 문제를 추적하기 어려워집니다.
실수 2: finally 블록을 사용하지 않기
try {
// 코드
} catch (e) {
// 오류 처리
}
// 자원 해제 및 정리 코드가 없음
올바른 코드:
try {
// 코드
} catch (e) {
// 오류 처리
} finally {
// 자원 해제 및 정리 코드
}
주의사항: finally 블록을 사용해 항상 필요한 정리 작업을 수행해야 합니다.
6. 정리
- 예외 처리는 프로그램의 안정성을 높이는 중요한 기법입니다.
try,catch,finally를 이용하여 예외를 관리할 수 있습니다.- 예외를 무시하지 말고 적절히 처리하여 사용자에게 알리는 것이 중요합니다.
- 다음에는
throw키워드를 사용하여 사용자 정의 예외 처리에 대해 학습하는 것을 추천합니다.