Dart catch子句

时间:2013-12-27 15:30:15

标签: exception-handling try-catch dart

我最近偶然发现了以下Dart代码:

void doSomething(String url, String method) {
    HttpRequest request = new HttpRequest();

    request.open(method, url);
    request.onLoad.listen((event) {
        if(request.status < 400) {
            try {
                String json = request.responseText;
            } catch(e) {
                print("Error!");
            }
        } else {
            print("Error! (400+)");
        }
    });

    request.setRequestHeader("Accept", ApplicationJSON);
}

我想知道catch子句中e变量是什么:

catch(e) {
    ...
}

Obviously its some sort of exception,但是(1)为什么我们不需要指定它的类型,以及(2)我可以在那里添加什么来指定它的具体类型?例如,我如何以与catchError(someHandler, test: (e) => e is SomeException)类似的方式处理多种类型的可能异常?

1 个答案:

答案 0 :(得分:19)

1)Dart是一种可选的打字语言。因此,e的类型不是必需的。

2)您必须使用以下语法才能仅捕获SomeException

try {
  // ...
} on SomeException catch(e) {}

请参阅catch section of Dart: Up and Running

最后catch可以接受2个参数(catch(e, s)),其中第二个参数是StackTrace