如何在Dart中比较相同的对象实例?

宝拉·伊萨贝尔·麦地那

我正在进行http调用,该调用将返回200、412或403 statusCode。如果返回错误代码,我将引发异常

if(response.statusCode == 412){
  throw InvalidCredentialsException();
}
else if(response.statusCode == 403){
  throw SalesManUnregisteredException();
}
else{
  throw ServerException();

在存储库实现中,我需要捕获错误,以便可以返回适当的故障响应

try {
//code
}
catch (e){
   if(e == InvalidCredentialsException())
      return InvalidCredentialsFailure();
   else if(e == SalesManUnregisteredException())
      return SalesManUnregisteredFailure();
   else
      return ServerFailure();
}

当我打印vars时

print(e) //Instance of InvalidCredentialsException
print(InvalidCredentialsFailure()) //Instance of InvalidCredentialsException

但是当我比较时,它返回false

print(e == InvalidCredentialsFailure()) //false

我该如何等同于这些相同的实例,以便根据抛出的异常返回失败类?

julemand101

如果要处理不同类型的异常,则应使用on关键字指定要捕获的类型:

try {
  //code
} on InvalidCredentialsException catch (e) {
  return InvalidCredentialsFailure();
} on SalesManUnregisteredException catch (e) {
  return SalesManUnregisteredFailure();
} catch (e) {
  return ServerFailure();
}

catch如果找不到另一个捕获,则最后一个捕获所有其他异常。

只是为了提供信息,如果您想比较对象的类型,则应使用is关键字like (e is SalesManUnregisteredException)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档