Stiamo lanciando un sistema e talvolta otteniamo la famosa eccezione NullReferenceException
con il messaggio Object reference not set to an instance of an object
.
Tuttavia, in un metodo in cui abbiamo quasi 20 oggetti, avere un log che dice che un oggetto è nullo, è davvero inutile. È come dirti, quando sei l'agente di sicurezza di un seminario, che un uomo tra i 100 partecipanti è un terrorista. Questo è davvero inutile per te. Dovresti ottenere maggiori informazioni, se vuoi scoprire quale uomo è l'uomo minaccioso.
Allo stesso modo, se vogliamo rimuovere il bug, dobbiamo sapere quale oggetto è nullo.
Ora, qualcosa mi ha ossessionato per diversi mesi, e cioè:
Perché .NET non ci fornisce il nome, o almeno il tipo di riferimento all'oggetto, che è null? . Non riesci a capire il tipo dal riflesso o da qualsiasi altra fonte?
Inoltre, quali sono le migliori pratiche per capire quale oggetto è nullo? Dovremmo verificare sempre il nullability degli oggetti in questi contesti manualmente e registrare il risultato? C'è un modo migliore?
Aggiornamento:
L'eccezione The system cannot find the file specified
ha la stessa natura. Non è possibile trovare il file, finché non si allega al processo e si esegue il debug. Immagino che questi tipi di eccezioni possano diventare più intelligenti. Non sarebbe meglio se .NET potesse dirci c:\temp.txt doesn't exist.
invece di quel messaggio generale? Come sviluppatore, voto di sì.