이 글은 Dart 프로그래밍 입문자를 위해 예외 처리 방법을 설명합니다. 예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 안전하게 관리하여 프로그램의 안정성을 높이는 중요한 방법입니다. 예외 처리의 개념과 try-catch 구문, 여러 종류의 예외 처리, finally 블록, 사용자 정의 예외 등을 실습 예제를 통해 익힐 수 있도록 설명합니다.
Dart 예외 처리
예외는 프로그램이 실행되는 동안 발생하는 예상치 못한 상황이나 오류를 말합니다. 예를 들어, 0으로 숫자를 나누려고 하거나, 존재하지 않는 파일을 열려고 할 때 예외가 발생할 수 있습니다.
try-catch 구문
Dart에서는 'try-catch' 구문을 사용하여 예외를 처리합니다.
기본 형태는 다음과 같습니다:
try {
// 예외가 발생할 수 있는 코드
} catch (e) {
// 예외가 발생했을 때 실행되는 코드
}
예시를 통해 살펴보겠습니다:
void main() {
try {
int result = 10 ~/ 0; // 0으로 나누기 시도
print('결과: $result'); // 이 줄은 실행되지 않습니다
} catch (e) {
print('오류 발생: $e');
}
}
이 코드를 실행하면 다음과 같은 결과가 나옵니다:
오류 발생: IntegerDivisionByZeroException
'10 ~/ 0'에서 0으로 나누려고 시도하여 예외가 발생했지만, catch 블록에서 이를 잡아 오류 메시지를 출력했습니다.
여러 종류의 예외 처리하기
때로는 여러 종류의 예외를 다르게 처리해야 할 수 있습니다. 이럴 때는 여러 개의 catch 블록을 사용합니다:
void main() {
try {
// 예외가 발생할 수 있는 코드
List<int> numbers = [1, 2, 3];
print(numbers[10]); // 존재하지 않는 인덱스 접근
} on RangeError {
print('리스트의 범위를 벗어났습니다.');
} on Exception catch (e) {
print('다른 종류의 예외가 발생했습니다: $e');
} catch (e) {
print('알 수 없는 오류가 발생했습니다: $e');
}
}
이 코드를 실행하면 다음과 같은 결과가 나옵니다:
리스트의 범위를 벗어났습니다.
finally 블록 사용하기
finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드 블록입니다. 주로 자원을 해제하거나 정리 작업을 수행할 때 사용합니다.
void main() {
try {
print('파일을 열고 작업을 시작합니다.');
// 파일 작업 수행
throw Exception('파일 처리 중 오류 발생'); // 의도적으로 예외 발생
} catch (e) {
print('오류 발생: $e');
} finally {
print('파일을 닫고 자원을 정리합니다.');
}
}
실행 결과:
파일을 열고 작업을 시작합니다.
오류 발생: Exception: 파일 처리 중 오류 발생
파일을 닫고 자원을 정리합니다.
사용자 정의 예외 만들기
때로는 프로그램의 특정 상황에 맞는 예외를 직접 만들어 사용하고 싶을 수 있습니다. Dart에서는 Exception 클래스를 상속받아 사용자 정의 예외를 만들 수 있습니다.
class InsufficientBalanceException implements Exception {
final double balance;
final double withdrawAmount;
InsufficientBalanceException(this.balance, this.withdrawAmount);
String toString() {
return '잔액 부족: 현재 잔액 $balance, 출금 시도액 $withdrawAmount';
}
}
class BankAccount {
double _balance = 0;
void deposit(double amount) {
_balance += amount;
}
void withdraw(double amount) {
if (_balance < amount) {
throw InsufficientBalanceException(_balance, amount);
}
_balance -= amount;
}
}
void main() {
BankAccount account = BankAccount();
account.deposit(1000);
try {
account.withdraw(1500);
} on InsufficientBalanceException catch (e) {
print('출금 실패: $e');
}
}
실행 결과:
출금 실패: 잔액 부족: 현재 잔액 1000.0, 출금 시도액 1500.0
이 예제에서는 은행 계좌의 출금 기능을 구현하면서, 잔액이 부족할 경우 사용자 정의 예외를 발생시키고 있습니다.
Dart 예외 처리 요약
- 예외는 프로그램 실행 중 발생하는 예상치 못한 상황입니다.
- try-catch 구문을 사용하여 예외를 처리합니다.
- 여러 종류의 예외를 다르게 처리할 수 있습니다.
- finally 블록은 예외 발생 여부와 관계없이 항상 실행됩니다.
- 필요한 경우 사용자 정의 예외를 만들어 사용할 수 있습니다.
예외 처리를 잘 활용하면 프로그램의 안정성을 높이고, 오류 상황을 더 잘 관리할 수 있습니다.
'프로그래밍 언어 > Dart' 카테고리의 다른 글
Dart 패키지 사용법. http 패키지 예제와 함께 배우기 - Dart 기초 #21 (0) | 2024.06.27 |
---|---|
Dart 입문자를 위한 라이브러리 활용법. 프로그래밍과 파일 입출력 예시 코드 - Dart 기초 #20 (0) | 2024.06.26 |
Dart Stream 사용법 및 예제 통한 비동기 처리와 필터링 프로그래밍 - Dart 기초 #18 (0) | 2024.06.24 |
Dart 비동기 프로그래밍. Future와 async/await 사용법 및 예제 코드 - Dart 기초 #17 (0) | 2024.06.21 |
Dart 제네릭 사용법. 타입 안전성과 코드 재사용성을 높이는 방법 - Dart 기초 #16 (0) | 2024.06.20 |