首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法来查询一个类是否包含一个具有某种已知名称的实例变量?

问是否有一种方法来查询一个类是否包含一个具有某种已知名称的实例变量?
EN

Stack Overflow用户
提问于 2014-02-23 20:36:52
回答 2查看 60关注 0票数 1

当从MySql截取错误时,事先不知道传递给我的错误类的内容是什么。所以我编码:

代码语言:javascript
复制
.catchError((firstError) {
  sqlMessage = firstError.message; 
  try {        
    sqlError = firstError.osError;
  } catch (noInstanceError){
    sqlError = firstError.sqlState;
  }
});

在这种情况下,我想知道e是否包含实例变量osError或sqlState,因为其中任何一个都包含特定的错误代码。总的来说(为了提高我的知识),是否有可能编写类似if (firstError.instanceExists(osError)) ...的东西,以及如何编写?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-23 20:43:30

这应该是你想做的事:

代码语言:javascript
复制
import 'dart:mirrors';

...

// info about the class declaration
reflect(firstError).type.declarations.containsKey(#osError);

// info about the current instance
var m = reflect(firstError).type.instanceMembers[#osError];
var hasOsError = m != null && m.isGetter;
票数 1
EN

Stack Overflow用户

发布于 2014-02-24 19:53:37

Günter的回答正确地显示了如何使用镜像,但是对于您的特定用例,我建议使用"is“检查而不是镜像。我并不特别了解mysql,但它可能如下所示:

代码语言:javascript
复制
.catchError((error) {
   sqlMessage = error.message;
   if (error is MySqlException) {
     sqlError = error.sqlState;
   } else if (error is OSError) {
     sqlError = error.errorCode;
   }
})

也许可以向詹姆斯·奥TS,辛吉斯基的作者寻求建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21974178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档