C#,Catch异常

时间:2012-09-19 16:34:54

标签: c# exception

我使用

获得了一个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?

由于

3 个答案:

答案 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”是激活的那个。