Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Dart中比较相同的对象实例?_Dart - Fatal编程技术网

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

如何在Dart中比较相同的对象实例?,dart,Dart,我正在进行一个http调用,该调用将返回200、412或403状态码。如果它返回一个错误代码,我将抛出一个异常 if(response.statusCode == 412){ throw InvalidCredentialsException(); } else if(response.statusCode == 403){ throw SalesManUnregisteredException(); } else{ throw ServerException(); 在存储库实现中

我正在进行一个http调用,该调用将返回200、412或403状态码。如果它返回一个错误代码,我将抛出一个异常

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)