.net 如果找不到ODBC驱动程序,应该抛出什么异常
我有以下代码搜索已安装的Microsoft Access驱动程序:.net 如果找不到ODBC驱动程序,应该抛出什么异常,.net,exception,odbc,.net,Exception,Odbc,我有以下代码搜索已安装的Microsoft Access驱动程序: var odbcRegKey = Registry.LocalMachine.OpenSubKey( "SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Drivers", false); var drivers = new List<string>(odbcRegKey.GetSubKeyNames()); if (drivers.Contains("Microsoft Access D
var odbcRegKey = Registry.LocalMachine.OpenSubKey(
"SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Drivers", false);
var drivers = new List<string>(odbcRegKey.GetSubKeyNames());
if (drivers.Contains("Microsoft Access Driver (*.mdb, *.accdb)"))
{
MicrosoftAccessProvider = "Microsoft Access Driver (*.mdb, *.accdb)";
}
else if (drivers.Contains("Microsoft Access Driver (*.mdb)"))
{
MicrosoftAccessProvider = "Microsoft Access Driver (*.mdb)";
}
else
{
//TODO: Throw some kind of excception
}
var odbcRegKey=Registry.LocalMachine.OpenSubKey(
“软件\\ODBC\\ODBCINST.INI\\ODBC驱动程序”,false);
var drivers=新列表(odbcRegKey.GetSubKeyNames());
if(drivers.Contains(“Microsoft Access驱动程序(*.mdb,*.accdb)”)
{
MicrosoftAccessProvider=“Microsoft访问驱动程序(*.mdb,*.accdb)”;
}
else if(drivers.Contains(“Microsoft Access驱动程序(*.mdb)”))
{
MicrosoftAccessProvider=“Microsoft访问驱动程序(*.mdb)”;
}
其他的
{
//托多:找个借口
}
如果找不到ODBC驱动程序,应该抛出什么异常?没有用于的公共构造函数,我实际上会这样抛出:
throw new NotSupportedException("ODBC Driver not found!");
在这种情况下,尝试继续运行程序是非常罕见的。任何捕获此异常的代码都不知道如何安装提供程序。MessageBox.Show()和Environment.Exit()是合适的。只考虑抛出异常,如果程序可以在没有dBASE的情况下蹒跚而行。 当有疑问时,无效操作异常是我的选择。如果它是可配置的(也许可以使用除了访问之外的其他东西),也可以考虑配置异常。我们需要更多的上下文——这是在库中,还是在应用程序的启动中,或者其他什么?安装无访问驱动程序肯定是错误的吗?Jon,我有一个32位访问驱动程序。问题是如何让它在64位.NET进程中运行。这是不可能的,直到发布Office 2010 64位和。有关更多上下文,请参见。哇…什么?留言箱,显示?如果这在库代码中呢?还是命令行应用程序?还是ASP.NET应用程序?使用异常不仅仅是因为程序可能会步履蹒跚,而是为了将错误处理推迟到更高的层次,这通常可以更好地决定是否/如何处理。哇,你从哪里得到这些信息的?我同意Mark。顺便说一句,此代码用于Microsoft Access和的SQL查询运行程序。它位于一个单独的DB访问类中,最后一个MessageBox.Show()显示错误。该异常适用于未实现基类所有功能的派生类。(顺便说一句,这通常意味着它们违反了Liskov替换原则。)是的,但是如果ODBCException暴露的不是ctor,那么他还能抛出什么样的异常呢?我会立即使用@Mark Brackett建议的InvalidOperationException。