如何解决如何在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();
}
当我打印变量时
print(e) //Instance of InvalidCredentialsException
print(InvalidCredentialsFailure()) //Instance of InvalidCredentialsException
但是当我比较它时,它返回false
print(e == InvalidCredentialsFailure()) //false
如何将这些实例等同起来,以便根据抛出的异常返回失败类?
解决方法
如果要处理不同类型的异常,则应使用on
关键字指定要捕获的异常类型:
try {
//code
} on InvalidCredentialsException catch (e) {
return InvalidCredentialsFailure();
} on SalesManUnregisteredException catch (e) {
return SalesManUnregisteredFailure();
} catch (e) {
return ServerFailure();
}
如果找不到另一个捕获,最后一个catch
将捕获所有其他异常。
仅供参考,如果要比较对象的类型,应使用is
之类的(e is SalesManUnregisteredException)
关键字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。