프로그램 동작시 발생하는 버그를 좀 더 체계적으로 대응하기 위한 방법이 Exception handling 입니다. 이번 글에서는 Dart의 Exception handling을 알아보도록 하겠습니다.
assert(condition, optionalMessage);
void main() {
var i = 5;
assert(i > 0, 'A positive integer is required.');
}
// assert는 에러를 확인하는 코드를 내장하고 있다.
assert(i > 0, 'A positive integer is required.');
// 이와 반대로 throw는 에러를 확인하는 코드를 가지고 있지 않다. 그냥 프로그램의 실행만 멈춘다
throw Exception('Negative number: $num');
void main() {
var num = -5;
if (num < 0) {
throw Exception('Negative number: $num');
}
}
void main() {
try { // try 코드 내부에는 Exception이 발생할 가능성이 있는 코드를 추가합니다
var a = 7;
var b = 0;
print(a ~/ b);
} catch(e, s) { // catch 코드에는 각각의 Exception별 프로그램이 취해야 할 행동을 추가합니다
print('An exception occurred: $e');
print('Stack trace: $s');
} finally { // finally 코드에는 프로그램이 마지막으로 항상 실행해야 할 행동을 추가합니다
print('This is the finally block');
}
}
at functionC(file.dart:line_number) // 일반적으로 문제의 원인은 첫줄에 있습니다.
at functionB(file.dart:line_number) // 하지만 종종 다른 줄에 있는 경우도 있으니
at functionA(file.dart:line_number) // 실제로는 전부 확인해 보아야 합니다.
void main() {
try {
var a = 7;
var b = 0;
print(a ~/ b);
} catch(e, s) { // s는 stacktrace를 의미합니다.
print('An exception occurred: $e');
print('Stack trace: $s');
} finally {
print('This is the finally block');
}
}