Per me sembra solo una questione di preferenza. Se ti infastidisce così tanto, potresti sempre sottoclassi lo NullReferenceException
e cambiare il messaggio. :)
Ciò che si riduce a è la quantità di informazioni disponibili quando viene creato il messaggio. Senza passare manualmente alcune informazioni aggiuntive, la semplice determinazione del nome del campo che era nullo all'interno di NullReferenceException
richiederebbe una riflessione (probabilmente anche un po '), che è un'operazione piuttosto pesante. Prendiamo ad esempio lo ArgumentNullException
, per lanciarne uno in cui il messaggio indica il nome del parametro offendente, devi passare una stringa quando lo chiami: throw new ArgumentNullException("param1")
.
Il livello di dettaglio in un messaggio di eccezione dipende interamente dal programmatore che lo definisce, ma è prudente evitare di fare qualcosa di intenso sul sistema quando si genera un'eccezione.
fonte
2010-01-14 16:36:11
Grazie alla traccia di stack estremamente dettagliata, non penso che sia necessario essere più dettagliato. Inoltre dovrebbero davvero usare assert per evitare questo in primo luogo. – ChaosPandion
Qualsiasi tipo di debugging rallenta le cose. Mi chiedo, comunque, se rallenterebbe le cose * tanto * rispetto a quanto accelererebbe le cose non dovendo tornare indietro e scomporre tutti gli oggetti in linee separate, o impazzire con la finestra immediata per capire quale oggetto è nullo? –
Concordato che questo problema non è oneroso. L'una o due righe prima di quella in cui si è verificata l'eccezione di riferimento null ti dirà esattamente cosa non viene inizializzato. –