corretta libreria di gestione delle eccezioni (lancio / messaggio)

0

Ho appena scritto una libreria dll usando vb.net. durante il test, ho ricevuto un errore che inizialmente non utilizzavo un blocco try-catch. Il codice è

 Try
            'The first four bytes are for the Command
            _Command = DirectCast(BitConverter.ToInt32(data, 0), Commands)

            'The next four store the length of the name
            Dim nameLen As Integer = BitConverter.ToInt32(Data, 4)

            'The next four store the length of the message
            Dim msgLen As Integer = BitConverter.ToInt32(Data, 8)

            'This check makes sure that ClientName has been passed in the array of bytes
            If nameLen > 0 Then
                _ClientName = Encoding.UTF8.GetString(Data, 12, nameLen)
            Else
                _ClientName = Nothing
            End If

            'This checks for a null message field
            If msgLen > 0 Then
                _Message = Encoding.UTF8.GetString(data, 12 + nameLen, msgLen) <-- this is the error line
            Else
                _Message = Nothing
            End If
        Catch ex As Exception
            Throw
        End Try

L'errore è

Index and count must refer to a location within the buffer. Parameter name: bytes

La mia domanda ora è considerata una buona pratica per generare errori da dll o restituire un messaggio di errore al client.

Il mio client si aspetta un array se byte come risposta e ho bisogno di un modo per inviare un messaggio di errore valido

    
posta Smith 17.03.2015 - 16:01
fonte

1 risposta

1

Le eccezioni denotano casi eccezionali, che penso siano nel tuo caso. Supponendo che io comprenda correttamente la tua domanda, restituire un risultato vuoto / nullo potrebbe anche implicare che l'input fosse [4][4][4][0] , quindi non c'era nulla da restituire, piuttosto che una matrice di input vuota o malformata.

Suggerirei di avvolgere quell'eccezione con un'eccezione della tua, qualcosa che avrà più senso per il tuo cliente ma senza fornire ulteriori informazioni su cosa sta succedendo sotto. Se al tuo cliente non interessa, e vorrebbe trattare situazioni come quelle sopra e situazioni in cui l'input non è valido lo stesso, allora sarà a loro.

    
risposta data 17.03.2015 - 16:11
fonte

Leggi altre domande sui tag