Quando devo usar a depuração.Asserção?

Sou engenheiro de software profissional há cerca de um ano, tendo-me graduado com uma licenciatura em Informática. Eu sa ... adequada? Faria mais sentido fazer Debug.Assert(val != null); ou if ( val == null ) throw new exception();