Dart中的HttpServer流返回什么类型的错误

Dart中的HttpServer流返回什么类型的错误,dart,exception,dart-server,Dart,Exception,Dart Server,我要通过考试。我知道我可以等待这样的HttpRequest: 导入'dart:io'; Future main()异步{ var server=await HttpServer.bind( InternetAddress.loopbackIPv4, 4040, ); 打印('在本地主机上侦听:${server.port}'); 等待(服务器中的HttpRequest请求){ request.response.write('Hello,world!'); 等待request.response.cl

我要通过考试。我知道我可以
等待
这样的HttpRequest:

导入'dart:io';
Future main()异步{
var server=await HttpServer.bind(
InternetAddress.loopbackIPv4,
4040,
);
打印('在本地主机上侦听:${server.port}');
等待(服务器中的HttpRequest请求){
request.response.write('Hello,world!');
等待request.response.close();
}
}
这是因为HttpServer实现了流。但由于流可以返回值或错误,我应该捕获如下异常,对吗:

试试看{
等待(服务器中的HttpRequest请求){
request.response.write('Hello,world!');
等待request.response.close();
}
}捕获(e){
// ???
}
但我不确定能捕捉到什么样的异常。异常是来自请求(并保证400级响应)还是来自服务器(并保证500级响应)?或者两者都有?

错误状态代码 在异常情况下,将设置一个错误\u请求状态代码:

}捕获(e){
//尝试发送错误的请求响应。
request.response.statusCode=HttpStatus.badRequest;
(见附件)

这将是
400
(请参阅)

流错误 ,异常将是
rethrow
n,这意味着您仍将收到流中的所有错误。这种情况发生在中,它处理
bind
中的所有请求
并且您在流中得到错误,因为它们是

各种错误 我只能找到一个显式异常类型:

if(disposition==null){
抛出常量HttpException(
“Mime多部分不包含内容处置标头值”);
}
如果(编码)=null&&
!\u transparentEncodings.contains(encoding.value.toLowerCase()){
//TODO(ajohnsen):支持BASE64等。
抛出HttpException('不支持的ContentTransferncode:'
“${encoding.value}”);
}
(见附件)


这两个都是。

非常有用!谢谢。有趣的是,框架本身试图返回一个错误的请求并关闭响应。我想我必须自己这样做。