Si consideri la seguente classe e il metodo:Quale eccezione nulla da lanciare?
public class MyDto
{
public MyDtoChild Child {get; set;}
}
e
public void ProcessDto(MyDto myDto)
{
if(myDto == null) throw new ArgumentNullException("myDto");
this.CheckSomething(myDto.Child.ChildProperty);
}
Se chiamato con un MyDto
con un null Child
sinistra per esso è di possedere dispositivi di questo lancerà una NullReferenceException
che può essere estremamente difficile da diagnosticare in metodi più complessi.
In genere lancio un ArgumentNullException
all'inizio del metodo se myDto
è nullo ma qual è l'eccezione appropriata da lanciare se myDto.Children
è nullo? Un ArgumentNullException
? A NullReferenceException
? Un'eccezione personalizzata?
È possibile garantire che 'MyDto.Child' non sarà mai null utilizzando un modificatore' readonly' sul proprio campo di supporto, assumendo che 'MyDto' possieda il valore del campo. – Dai
@KamilT semplicemente perché mi ci sono volute diverse ore per rintracciare dove questo particolare ref null sta arrivando e mi piacerebbe renderlo più robusto per i futuri sviluppatori. – Liath
Va bene che il figlio sia "nullo" in altre parti del sistema o sia un caso eccezionale? –