从MySql拦截错误时,事先不知道传递给我的错误类的内容是什么。所以我编码:
.catchError((firstError) {
sqlMessage = firstError.message;
try {
sqlError = firstError.osError;
} catch (noInstanceError){
sqlError = firstError.sqlState;
}
});
在这种特定情况下,我想知道e是否包含实例变量
osError
或sqlState
,因为它们中的任何一个都包含特定的错误代码。总体而言(为了提高我的知识),可能会写类似if (firstError.instanceExists(osError)) ...
的东西,怎么写? 最佳答案
这应该做您想要的:
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;