Flutter/Flutter FAQ
Flutter 플러터와 다트의 try-catch 구문에서 catch가 실행되지 않습니다., Flutter and Dart try catch—catch does not fire
독학코딩
2023. 12. 18. 09:26
반응형
질문
아래의 HTML을 한국어로 번역하되, HTML 태그와 태그 안의 텍스트는 영어로 유지해주세요.
주어진 단축 코드 예시:
...
print("1 parsing stuff");
List<dynamic> subjectjson;
try {
subjectjson = json.decode(response.body);
} on Exception catch (_) {
print("throwing new error");
throw Exception("Error on server");
}
print("2 parsing stuff");
...
catch 블록은 디코딩이 실패할 때마다 실행될 것으로 예상합니다. 그러나 잘못된 응답이 반환되면 터미널에는 예외가 표시되고 catch나 계속 진행하는 코드가 실행되지 않습니다...
flutter: 1 parsing stuff
[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: type
'_InternalLinkedHashMap<String, dynamic>' is not a subtype of type
'List<dynamic>'
여기서 무엇을 놓치고 있는 걸까요?
답변
함수는 어떤 것이든 던질 수 있습니다. 심지어 Exception
이 아닌 것들도:
void foo() {
throw 42;
}
하지만 on Exception
절은 오직 Exception
의 하위 클래스만을 명시적으로 catch합니다.
따라서, 다음 코드에서:
try {
throw 42;
} on Exception catch (_) {
print('never reached');
}
on Exception
은 결코 도달하지 않습니다.
반응형