5

我得到一个异常类型使用

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");
}

并且代码只写“否”。

如何在到达异常之前捕获 EntityException?

谢谢

4

3 回答 3

4

您拥有的代码应该可以正常工作,前提是EntityException在该文件或命名空间的当前使用语句集中没有定义其他类型。

尝试完全限定类型,如下所示:

try{
...
}catch(System.Data.EntityException a){
  // need to do something
  log.Error("I got it!");
}catch(Exception e){
  log.Error("No");
}
于 2012-09-19T16:39:36.040 回答
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.EntityException 之前引用 System.Data.Entity。

于 2014-03-18T14:00:02.697 回答
-1

第一个匹配异常的“catch”是被激活的。

于 2012-09-19T16:38:23.347 回答