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?