Ton*_*y M 5 error-handling asynchronous async-await dart flutter
如果应用程序无法连接到服务器(例如,如果服务器已关闭),我想捕获异常,但不确定如何连接并且到目前为止尚未成功。
\n我的代码:
\nstatic\xc2\xa0Future<String>\xc2\xa0communicate(String\xc2\xa0img,\xc2\xa0String\xc2\xa0size)\xc2\xa0async\n{\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\n String\xc2\xa0request\xc2\xa0=\xc2\xa0size.padLeft(10,\xc2\xa0'0')\xc2\xa0+\xc2\xa0img;\n Socket\xc2\xa0_socket;\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0await\xc2\xa0Socket.connect(ip,\xc2\xa09933).then((Socket\xc2\xa0sock) \n {\n _socket\xc2\xa0=\xc2\xa0sock;\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}).then((_)\n {\n //Send\xc2\xa0to\xc2\xa0server\n _socket.add(ascii.encode(request));\n return\xc2\xa0_socket.first;\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}).then((data)\n {\n //Get\xc2\xa0answer\xc2\xa0from\xc2\xa0server\n response\xc2\xa0=\xc2\xa0\xc2\xa0ascii.decode(base64.decode(new\xc2\xa0String.fromCharCodes(data).trim()));\n });\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return\xc2\xa0response;\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\n}\nRun Code Online (Sandbox Code Playgroud)\n函数调用:
\nvar ans = await communicate(bs64Image, size);\nRun Code Online (Sandbox Code Playgroud)\n
一般来说,您可以使用 async/await 处理这样的错误:
try {
// code that might throw an exception
}
on Exception1 {
// exception handling code
}
catch Exception2 {
// exception handling
}
finally {
// code that should always execute; irrespective of the exception
}
Run Code Online (Sandbox Code Playgroud)
对于你的情况,你应该尝试这样的事情:
try {
var ans = await communicate(bs64Image, size);
}
catch (e){
print(e.error);
}
finally {
print("finished with exceptions");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8592 次 |
| 最近记录: |