Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如果找不到ODBC驱动程序,应该抛出什么异常_.net_Exception_Odbc - Fatal编程技术网

.net 如果找不到ODBC驱动程序,应该抛出什么异常

.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

我有以下代码搜索已安装的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 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。