如何从System.Data命名空间捕获异常?

问题描述:

我开始使用实体框架4.3.1与代码优先的方法。如何从System.Data命名空间捕获异常?

我想避免应用程序崩溃时数据库服务器关闭或不可用捕捉特定的异常。 想象一下这个代码的短样件:

using (var db = new MyContext()) 
{ 
    var people = new People(); 
    db.People.AddObject(people); 
    db.SaveChanges(); 
} 

当服务器关闭时,我收到ProviderIncompatibleException。 如果我试图修改代码捕获ProviderIncompatibleException这样

using (var db = new MyContext()) 
{ 
    try 
    { 
     var people = new People(); 
     db.People.AddObject(people); 
     db.SaveChanges(); 
    } 
    catch(ProviderIncopatibleException) 
    { 
    } 
}  

我收到编译器错误“捕获或抛出的类型必须从System.Exception派生”。 如何使用实体框架捕获大多数特定的异常? 谢谢你的帮助。

+1

再试据http://msdn.microsoft.com/en-us/library/system.data.providerincompatibleexception.aspx从System.Exception派生。你有没有尝试过使用整个类路径:'System.Data.ProviderIncompatibleException'? – MarcinJuraszek

+0

名称中有一个错字:ProviderInco-patibleException' – Polynomial

+0

@MarcinJuraszek你是对的。我没有引用System.Data汇编 –

在班级名称中存在拼写错误 - 您错过了Incompatible中的'm'。

ProviderIncompatibleException

+0

感谢您的信息。我有固定的例外名称。 –