我在具有大量async
和await
的Flutter应用程序中捕获异常时遇到问题。我来到飞镖垫解决了一些问题,最简单的案例使我到了这里。
import 'dart:io';
void main() {
try {
foo();
} on SocketException {
print('socket');
}
}
foo() {
throw SocketException;
}
预期的结果是打印'socket',但它给出了这个错误:
未捕获的错误:SocketException。
我想念什么?
答案 0 :(得分:1)
您需要实例化该对象,而不是这样做
不要
foo() {
throw SocketException;
}
做
foo() {
throw SocketException();
}
答案 1 :(得分:0)
我认为问题出在SocketException错误。您可以阅读this来查看是否抛出SocketException,必须具有带有String参数的构造函数,并且需要实例化该异常。因此,如果您在下面编写代码,则会打印“ socket”。
foo(){
throw SocketException("message");
}
This链接也可能有助于了解如何捕获不同的异常。
从下面的示例中,您可以看到,如果要抛出异常,则必须首先实例化它。
void main() {
try {
foo();
}
on IntegerDivisionByZeroException {
print('Cannot divide by zero');
}
}
foo(){
throw IntegerDivisionByZeroException();
}