未捕获到异常

时间:2020-03-28 13:52:02

标签: dart

我在具有大量asyncawait的Flutter应用程序中捕获异常时遇到问题。我来到飞镖垫解决了一些问题,最简单的案例使我到了这里。

import 'dart:io';

void main() {
  try {
    foo();
  } on SocketException {
    print('socket');
  }
}
​
foo() {
  throw SocketException;
}

预期的结果是打印'socket',但它给出了这个错误:

未捕获的错误:SocketException。

我想念什么?

2 个答案:

答案 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();
}