Registrazione delle informazioni sull'istanza in Eccezioni

1

Durante lo sviluppo su una base di codice esistente di grandi dimensioni ho iniziato a catturare valori variabili nella mia registrazione delle eccezioni. Ad esempio:

public int Foo(int a, int b)
{
   int returnInt;
   try{
      returnInt = bar(a) * b;
   }
   catch (Exception ex){
      ex.Message += "a: {0}, b: {1}", a, b;
      logger.log(ex);
   }

   return returnInt;
}

Anche se non sto chiedendo di questo pseudocodice specifico, mi sono chiesto se ci fossero validi motivi per non farlo?

Per me sembra che la registrazione delle variabili di istanza in aggiunta al messaggio di errore e alla traccia di stack più generici sia una cosa positiva. Comunque non l'ho mai visto fare altrove.

    
posta Underscore 16.09.2014 - 22:46
fonte

3 risposte

3

Concettualmente, le eccezioni riguardano il comportamento "eccezionale / inaspettato" della tua applicazione. Se si desidera registrare le informazioni, è necessario utilizzare un framework di registrazione adeguato.

È anche molto più pulito vedere qualcosa di simile

...
} catch (Exception ex){
      logger.error(String.format("something went wrong with information %s %s", "infoA", "infoB"));
      throw ex;
}
    
risposta data 17.09.2014 - 11:55
fonte
1

Non sono un esperto di sicurezza, ma l'unica ragione per cui posso pensare sarebbe la sicurezza.

Potrebbe non essere una buona idea registrare le variabili quando i valori contengono informazioni sensibili o personali dell'utente. Ad esempio nome utente, indirizzo, SSN, carta di credito, ecc ... Vorrei provare a registrare l'ID della transazione o l'ID ordine come riferimento ogni volta che è possibile.

Un'altra situazione potrebbe essere la definizione della tabella o un'istruzione SQL, che rivelerebbe la tua architettura e il tuo design.

A volte è difficile non implementare alcuni di questi quando sono il valore chiave nel determinare il problema, quindi penso che sia un equilibrio tra supporto e sicurezza.

    
risposta data 17.09.2014 - 00:44
fonte
0

Prendo il "log tutto e niente" * approccio alla registrazione perché altrimenti l'unica cosa che non si registra sarà inevitabilmente la cosa che è necessario sapere quando si verifica l'eccezione.

* naturalmente, come sottolinea Bri evito di registrare password, (alcuni) dettagli personali e dettagli di pagamento. Alcune informazioni personali potrebbero essere utili per registrare (nome e indirizzo e-mail) per aiutare a identificare la persona e potenzialmente contattarla in merito all'errore verificatosi, ma potrebbero esserci problemi legali a seconda della tua posizione.

    
risposta data 17.09.2014 - 19:37
fonte

Leggi altre domande sui tag