为什么 onError 处理程序不会在 Http.call() 中触发?



我正在尝试使用 Http 服务发出 Web 请求。 请求失败(如预期的那样)并返回 403。 我希望 onError 处理程序会执行,但事实并非如此。 将引发异常,并且永远不会捕获。

_http(url: '/widgets/shiny-trinket', method: 'PUT', data: 'some malformed data')
  .then((resp) => successHandler, 
  onError: (resp) {
    // why aren't we getting here?
    displayErrorMessage();
  });

引发的异常(从控制台):

Failed to load resource: the server responded with a status of 403 (Forbidden)
  http://localhost/widgets/shiny-trinket
Instance of '_XMLHttpRequestProgressEvent'
STACKTRACE:
null

我做错了什么吗? 还是这是一个错误?

更新

我也尝试了以下方法,但它也不起作用。

_http(url: '/widgets/shiny-trinket', method: 'PUT', data: 'some malformed data')
  .then((resp) => successHandler) 
  .catchError((e) {
    // why aren't we getting here?
    displayErrorMessage();
  });

我刚刚尝试了问题中的示例 如何让地理位置 API 在 Dartium 中工作? 这会产生 403 错误,并打印 catchError 中的错误消息。

window.navigator
  .geolocation.getCurrentPosition()
    ..then((pos) {
      window.alert(pos.toString());
    })
    ..catchError((PositionError error) {
      window.alert("Error code: ${error.code}, Error message: ${error.message}");
    })
    ..whenComplete(() => window.alert("complete"))
    ;

似乎是一个错误。 我在这里提交了拉取请求。

最新更新