dart 如何在使用catch(e)时访问自定义异常类成员?为什么我会得到这个错误?

sbdsn5lh  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(101)

如何访问自定义异常类的成员变量后,我们在一个catch参数捕获它?为什么我们得到这个错误,尽管runtimeType显示它是customException类型而不是Object类型?

class CustomException implements Exception{
  //Custom Exception class
  String message;
  int numberMessage;
  CustomException(this.message, this.numberMessage);
  
  @override
  String toString() {
    return message;
  }
}

void main() {
  try {
    throw CustomException('This is the best', 1223);
  } catch (z,t) {
      print(z);
      print(z.runtimeType); //Prints 'CustomException'
      print(z.numberMessage); //How do I access this member? Shows an error 'the getter 
                              //...numberMessage isn't defined for class Object'. 
      print(t.runtimeType);//Prints _StackTrace
  }
}

我尝试在catch关键字中添加CustomException类型,但即使这样也不起作用,因为它是一个错误的语法。

catch(CustomException z, t)
ovfsdjhp

ovfsdjhp1#

在catch块中有一个关键字来捕获特定类型的异常,你可以像下面这样使用-

void main() {
  try {
    throw CustomException('This is the best', 1223);
  } on CustomException catch (z,t) {
      print(z);
      print(z.runtimeType); //Prints 'CustomException'
      print(z.numberMessage); //How do I access this member? Shows an error 'the getter 
                              //...numberMessage isn't defined for class Object'. 
      print(t.runtimeType);//Prints _StackTrace
  }
}

相关问题