在这个方法中
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 {}
但是后来我没有机会记录一些意想不到的东西,如果它出现的话可以帮助我解决问题。