我使用
获得了一个Exception类型catch(Exception e){
log.Error(e.GetType()); // it write 'System.Data.EntityException'
}
所以我改变我的代码以捕获该异常,
try{
...
}catch(EntityException a){
// need to do something
log.Error("I got it!");
}catch(Exception e){
log.Error("No");
}
并且代码只写“否”。
如何在达到Exception之前捕获EntityException?
由于
答案 0 :(得分:4)
如果在该文件或名称空间的当前使用语句集中没有定义另一个EntityException
类型,那么 的代码应正常工作。
尝试完全限定类型,如下所示:
try{
...
}catch(System.Data.EntityException a){
// need to do something
log.Error("I got it!");
}catch(Exception e){
log.Error("No");
}
答案 1 :(得分:1)
我遇到了同样的问题,这里接受的答案对我来说并不适用。虽然EntityException完全限定为System.Data.EntityException,但实际上它在System.Data.Entity程序集中(参见http://msdn.microsoft.com/en-us/library/system.data.entityexception(v=vs.110).aspx),因此在Intellisense之前项目需要引用System.Data.Entity在代码中识别System.Data.EntityException。
答案 2 :(得分:-1)
匹配异常的第一个“catch”是激活的那个。