【发布时间】:2014-12-12 18:35:38
【问题描述】:
在这个方法中
public static void Detach()
{
try
{
using (var master = new DataContext(@"Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True"))
{
master.ExecuteCommand(string.Format("ALTER DATABASE [{0}] SET OFFLINE WITH ROLLBACK IMMEDIATE", DatabaseFile));
master.ExecuteCommand(string.Format("exec sp_detach_db '{0}'", DatabaseFile));
}
}
catch (Exception e)
{
... // add to log
}
}
我可以收到异常
System.Data.SqlClient.SqlException (0x80131904):数据库 'blablabla.mdf' 不存在。提供一个有效的数据库名称。要查看可用的数据库,请使用 sys.databases。
如果在未附加数据库时调用Detach(),则会发生这种情况。
我的问题是:如何仅吞下此特定消息以避免记录它?
文本可能是本地化的,所以这不起作用
if(!(e is SqlException && e.Message.Contains("Supply a valid database name")))
... // log
我不确定这个特定案例的错误代码是否唯一(谷歌证明了这一点?)
if(!(e is SqlException && e.Message.Contains("0x80131904")))
... // log
当然可以
try { ... } catch {}
但是我没有机会记录一些意外的东西,如果它出现的话可以帮助我解决问题。
【问题讨论】:
标签: c# exception exception-handling dbml