J'exécute mon application en mode débogage et je voudrais lever manuellement une exception (c'est-à-dire pas depuis le code). Est-ce qu'il y a un moyen de faire ça?
Bien sûr, l'exécution de throw new Exception("My forced exception");
dans la fenêtre Commande ou Exécution ne fonctionne pas.
EDIT: Je veux que l'exception soit interceptée par l'instruction try-catch qui entoure le code que je débogue.
Une façon possible consiste à interrompre une ligne et à modifier manuellement une variable nullable dans le chemin de code en null
juste avant qu'une opération ne se produise. Cela entraînera un NullReferenceException
à lancer.
Vous pouvez ajouter une méthode similaire à:
public static void ThrowAnException(string message)
{
throw new ApplicationException(message);
}
Ensuite, en utilisant la fenêtre Immediate, vous pouvez appeler ThrowAnException("Whoops")
Si vous exécutez dans le contexte d'un test unitaire et que le point où vous souhaitez que l'exception se produise se trouve derrière une interface ou une classe injectée, vous pouvez créer un objet factice qui lève l'exception.
L'avantage de ceci est qu'une fois que vous êtes satisfait d'avoir répliqué l'erreur, vous pouvez créer un nouveau test unitaire pour votre suite de régression.