当拦截来自MySql的错误时,事先不知道传递给我的错误类的内容是什么。所以我编码:
.catchError((firstError) {
sqlMessage = firstError.message;
try {
sqlError = firstError.osError;
} catch (noInstanceError){
sqlError = firstError.sqlState;
}
});
在这个特定情况下,我想知道e是否包含实例变量osError
或sqlState
,因为它们中的任何一个都包含特定的错误代码。更一般地说(为了提高我的知识)是否可以编写类似if (firstError.instanceExists(osError)) ...
的内容,以及如何编写?
答案 0 :(得分:1)
这应该做你想要的:
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 :(得分:1)