如何在Dart中比较相同的对象实例?
我正在进行一个http调用,该调用将返回200、412或403状态码。如果它返回一个错误代码,我将抛出一个异常如何在Dart中比较相同的对象实例?,dart,Dart,我正在进行一个http调用,该调用将返回200、412或403状态码。如果它返回一个错误代码,我将抛出一个异常 if(response.statusCode == 412){ throw InvalidCredentialsException(); } else if(response.statusCode == 403){ throw SalesManUnregisteredException(); } else{ throw ServerException(); 在存储库实现中
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();
}
如果找不到另一个捕获,最后一个捕获将捕获所有其他异常
仅供参考,如果要比较对象的类型,应使用is
关键字,如(e是SalesManuneRegisteredException)