Appropriato tipo di eccezione per il collegamento a un dispositivo tramite la porta COM

2

Sto lavorando alla creazione di una libreria wrapper C # attorno a una libreria C nativa che mi consente di comunicare direttamente con un particolare componente hardware su una porta seriale (COM).

Naturalmente, la libreria C restituisce i codici successo / fallimento dai suoi metodi. Mi piacerebbe tradurli in eccezioni, ma ho difficoltà a trovare le eccezioni appropriate integrate nel framework .Net. (Cerco di utilizzare i tipi di eccezioni esistenti quando possibile.)

Considerando che questa libreria esiste per lo streaming dei dati dall'hardware al pc e per inviare comandi all'hardware, stavo pensando di ricavare alcuni nuovi tipi di eccezione da System.IO.IOException . Questo è input / output, dopotutto, ma ciò non sembra molto "giusto" considerando che i tipi IOException esistenti si riferiscono tutti alla lettura da file.

Un esempio del codice che vorrei scrivere:

if (!NativeMethods.ConnectToDevice(deviceName)
{
    var message = NativeMethods.GetLastErrorMessage();
    throw new ConnectionException(message);
}

Dove ConnectionException è derivato da IOException .

  • È un approccio ragionevole?
  • Mi mancano altre eccezioni appropriate da usare direttamente (preferito) o per ricavare un nuovo tipo da?
posta RubberDuck 04.05.2016 - 11:43
fonte

1 risposta

2

Gestisco un'ampia raccolta di classi che interfacciano e avvolgono una gamma di hardware da accettori di banconote e stampanti a schede di circuito personalizzate che utilizzano più interfacce di comunicazione. Penso che dovresti scegliere l'eccezione che meglio descrive ciò che ha causato un problema. Ad esempio, se le parità dei byte non corrispondono, genera un'eccezione (facoltativamente derivata) System.IO , poiché è stata causata dall'interfaccia COM non dal dispositivo COM. Ma se si trattava di un errore che il dispositivo ha gettato, se è possibile sapere che attraverso un'API che forniscono, creerò una classe di eccezione derivata da Exception e gettiamo quelle eccezioni. Nel mio caso un accettatore di fatture che fallisce il suo POST è un'eccezione diversa dal fatto che il messaggio io abbia una brutta parità.

    
risposta data 06.05.2016 - 23:50
fonte

Leggi altre domande sui tag