• catch SocketException


    https://stackoverflow.com/questions/32810051/cannot-catch-socketexception/32810079#32810079

    https://github.com/dart-lang/sdk/issues/25518

    2
     

    Asynchronous errors can't be caught using try/catch(https://www.dartlang.org/docs/tutorials/futures/) at least unless you are using async/await(https://www.dartlang.org/articles/await-async/)

    See also https://github.com/dart-lang/sdk/issues/24278

    You can use the done future on the WebSocket object to get that error, e.g.:

    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');
      }
    }
    

      

    I get your point, but I don't understand why this is an asynchronous error. I mean, you get this error before starting to actually asynchronously listen to requests, right? – Alexandr Sep 27 '15 at 16:41
    1
    HttpServer.bind() is already async (returns a Future<HttpServer>) – Günter Zöchbauer Sep 27 '15 at 16:43
    You are right, Gunter. Thank you for this! – Alexandr Sep 28 '15 at 5:35

  • 相关阅读:
    强大的异或运算-深度好文
    40-3Sum Closest
    39-Remove Duplicates from Sorted Array
    谈谈AI
    38- Majority Element
    37-Invert Binary Tree
    36-Same Tree
    35-Remove Element
    34. Swap Nodes in Pairs
    33. Implement strStr()
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10826342.html
Copyright © 2020-2023  润新知