에러 핸들링은 프로그램의 안정성과 신뢰성을 높이는 중요한 기능입니다. Dart에서는 try
, catch
, on
, finally
블록과 커스텀 예외를 정의하여 사용할 수 있습니다.
try
블록: 예외가 발생할 수 있는 코드를 포함합니다.catch
블록: try
블록에서 예외가 발생하면 실행됩니다.on
블록: 특정 예외 타입에 대해서만 처리할 때 사용합니다.finally
블록: 예외 발생 여부와 상관없이 항상 실행됩니다. 리소스를 해제하거나 정리 작업을 할 때 유용합니다.void main() {
try {
var result = 10 ~/ 0;
} on IntegerDivisionByZeroException {
print('0으로 나눌 수 없습니다.');
} catch (e) {
print('기타 예외 발생: $e');
} finally {
print('이 코드는 항상 실행됩니다.');
}
}
위의 예제에서는 0으로 나눌 때 발생하는 예외를 try
, on
, catch
, finally
블록을 통해 처리합니다.
void checkNumber(int number) {
if (number < 0) {
throw FormatException('음수는 허용되지 않습니다.');
}
}
void main() {
try {
checkNumber(-1);
} catch (e) {
print('예외 발생: $e');
}
}
위의 예제에서는 throw
키워드를 사용하여 음수일 때 예외를 던집니다.
class CustomException implements Exception {
final String message;
CustomException(this.message);
String toString() => 'CustomException: $message';
}
void doSomething(int value) {
if (value < 0) {
throw CustomException('값이 음수일 수 없습니다.');
}
}
void main() {
try {
doSomething(-5);
} catch (e) {
print('예외 발생: $e');
}
}
위의 예제에서는 CustomException
클래스를 정의하고 이를 사용하여 예외를 던지고 처리합니다.
assert
사용assert
는 주로 디버그 모드에서 사용되는 조건 검증 도구입니다. 조건이 false
일 경우 프로그램을 중단시키고 오류 메시지를 출력합니다.
void main() {
var number = 5;
assert(number > 0, 'number는 0보다 커야 합니다.');
print('number는 양수입니다.');
}
위의 예제에서는 assert
를 사용하여 조건을 검증합니다.
finally
블록을 통해 파일, 소켓, 데이터베이스 연결 등 리소스를 반드시 해제합니다.try
, catch
, on
블록을 통해 다양한 예외 상황을 처리합니다.assert
를 사용하여 디버그 모드에서 조건을 검증합니다.