This project has moved. For the latest updates, please go here.

Как правильно обработать exception при случая если нету не одного устройства?

Sep 9, 2015 at 7:51 PM
Edited Sep 9, 2015 at 7:54 PM
Если во версии 1.0.8.355 работала даже если не было найдено неадного устройство, то в версии 1.0.16.432 вылетит ошибка когда вызываю:
this._twain32.OpenDSM();
Сам ехцептион такой:
exception = "It worked!"; ReturnCode = Failure; ConditionCode = Success
И на данный момент придумал обработать таким способам:
try
            {
                this._twain32.OpenDSM();
                ScanningDevices.Clear();
                for (int i = 0; i < this._twain32.SourcesCount; i++)
                {
                    ScanningDevices.Add(this._twain32.GetSourceProductName(i));
                }

                if (_twain32.SourcesCount > 0)
                {
                    CurrentScanningDevice = !string.IsNullOrEmpty(Settings.Default["ScanningDevice"].ToString())
                        ? Settings.Default["ScanningDevice"].ToString()
                        : ScanningDevices[_twain32.SourceIndex];
                }
            }
            catch (Exception exception)
            {
                ScanningDevices = new ObservableCollection<string>();
            } 
Coordinator
Sep 9, 2015 at 8:57 PM
Edited Sep 9, 2015 at 9:01 PM
Добрый день, turbosasa.
Всё достаточно просто. Я бы Ваш код переформулировал следующим образом:
try {
    ScanningDevices.Clear(); /* список устройств приводится в исходное состояние перед вызовом метода Twain32.OpenDSM() */
    this._twain32.OpenDSM();
    for (var i=0; i<this._twain32.SourcesCount; i++) { /* наполняем коллекцию, если удалось открыть DSM */
        ScanningDevices.Add(this._twain32.GetSourceProductName(i));
    }
    
    // ...
    
} catch(TwainExcaption ex) {
    // обработчик неудачного открытия DSM
    /* причины неудачи могут быть различными: невозможность загрузить библиотеку менеджера источников данных, отсутствие источников данных и т.д. */
} catch(Exception ex) {
    // общий обработчик исключения
}
Marked as answer by SARAFF on 9/9/2015 at 9:17 PM
Sep 9, 2015 at 9:11 PM
Спасибо