首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法捕获SocketException

无法捕获SocketException
EN

Stack Overflow用户
提问于 2015-09-27 16:16:38
回答 1查看 4.4K关注 0票数 4

我正在尝试达特,我已经为之奋斗了很长时间了。呼叫:

代码语言:javascript
复制
runServer() {
  HttpServer.bind(InternetAddress.ANY_IP_V4, 8080)
  .then((server) {
    server.listen((HttpRequest request) {
      request.response.write('Hello, World!');
      request.response.close();
    });
  });
}

曾经很有魅力。然后,尝试

代码语言:javascript
复制
try {
    runServer();
} on Error catch (e) {
    print("error");
} on Exception catch(f) {
    print("exception");
}

现在,我希望如果我使用这个尝试捕获并开始不止一次地监听同一个端口,因为我捕获了所有的异常和所有错误,程序不会崩溃。但是,在运行了两次代码之后,我没有输入任何try/catch子句,而是得到:

注意错误: SocketException:未能创建服务器套接字(OS错误:通常只允许使用每个套接字地址(协议/网络地址/端口)。

虽然我理解错误是什么,但我不明白为什么它不简单地输入catch错误/异常子句?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-27 16:19:25

使用try/catch (https://www.dartlang.org/docs/tutorials/futures/)至少不能捕获异步错误,除非使用async/await (https://www.dartlang.org/articles/await-async/)

另见https://github.com/dart-lang/sdk/issues/24278

您可以在done对象上使用WebSocket的未来来获取该错误,例如:

代码语言:javascript
复制
import 'dart:async';
import 'dart:io';

main() async {
  // Connect to a web socket.
  WebSocket socket = await WebSocket.connect('ws://echo.websocket.org');

  // Setup listening.
  socket.listen((message) {
    print('message: $message');
  }, onError: (error) {
    print('error: $error');
  }, onDone: () {
    print('socket closed.');
  }, cancelOnError: true);

  // Add message, and then an error.
  socket.add('echo!');
  socket.addError(new Exception('error!'));

  // Wait for the socket to close.
  try {
    await socket.done;
    print('WebSocket donw');
  } catch (error) {
    print('WebScoket done with error $error');
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32810051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档