Dart 코드는 예외를 던지고 잡을 수 있다. 예외는 예상치 못한 일이 발생했음을 나타내는 오류를 나타낸다. 예외를 잡지(catch) 않으면, 예외를 발생시킨 격리(isolate)가 일시 중단(suspend)되며, 일반적으로 격리(isolate) 및 해당 프로그램이 종료된다.
Java와 달리 Dart의 모든 예외는 unchecked exceptions이다. 메서드는 throw 할 수 있는 예외를 선언하지 않으며 예외를 catch 할 필요가 없다.
Dart는 Exception과 Error를 제공한다. 물론 할 수 있다면 예외를 정의할 수 있다. 그러나 다트 프로그램은 Exception 및 Error 객체뿐만 아니라 모든 null이 아닌 객체를 예외로 throw 할 수 있다.
throw
다음은 예외를 throw하거나 raise 하는 예제이다.
throwFormatException('Expected at least 1 section');
임의의 객체를 throw 할 수도 있다.
throw'Out of llamas!';
Note: 프로덕션 수준의 코드는 일반적으로 Error 또는 Exception를 구현하는 타입을 throw한다.
예외를 던지기 (throwing)는 표현식이므로, => 명령문에서 뿐만 아니라 표현식을 허용하는 다른 곳에서도 예외를 던질 수 있다 :
try {
breedMoreLlamas();
} on OutOfLlamasException {
// 지정한 타입의 예외
buyMoreLlamas();
} on Exception catch (e) {
// 그 밖의 예외
print('Unknown exception: $e');
} catch (e) {
// 지정된 타입 없음, 모두 처리
print('Something really unknown: $e');
}