Что является правильным исключением, если драйвер ODBC не может быть найден - PullRequest
2 голосов
/ 28 августа 2011

У меня есть следующий код, который ищет установленные драйверы 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
}

Какое исключение выдается, если не удается найти драйвер ODBC? Нет открытых конструкторов для OdbcException()

Ответы [ 3 ]

2 голосов
/ 28 августа 2011

В случае сомнений InvalidOperationException является моим выбором.Если это что-то настраиваемое (возможно, возможность использовать что-то, кроме Access), рассмотрите также ConfigurationException.

1 голос
/ 28 августа 2011

Довольно редко имеет смысл пытаться продолжить выполнение программы в подобных случаях.Какой бы код ни ловил это исключение, он также не будет знать, как установить провайдера.MessageBox.Show () и Environment.Exit () будут подходящими.Только когда-нибудь подумайте о том, чтобы сгенерировать исключение, если программа может работать без базы данных.

0 голосов
/ 28 августа 2011

Я бы на самом деле бросил так:

throw new NotSupportedException("ODBC Driver not found!");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...