3 votes

Existe-t-il un moyen d'initialiser en ligne les données d'une exception ?

Je veux lancer une exception avec des données supplémentaires sans créer de variable d'exception. Quelque chose comme ceci :

throw new Exception() { Data.Add("foo", "bar") };

Est-ce possible ?

9voto

Jon Skeet Points 692016

Il semble que vous devriez être en mesure de le faire avec :

throw new Exception { Data = { { "foo", "bar" } } };

(En supposant que vous utilisez C# 3, qui a des initialisateurs de collection...)

Bien sûr, vous pouvez faire cela en conjonction avec les arguments du constructeur :

throw new ArgumentException("paramName") { Data = { { "foo", "bar" } } };

0voto

Andrew Hare Points 159332

Malheureusement, vous ne pouvez pas utiliser les initialisateurs d'objets pour appeler des méthodes comme celle-ci.

0voto

Abdul Muqtadir Points 3887

Il y a bien un parametrized constructor prendre de la ficelle ;

  throw new Exception("Hello World");

0voto

Yahia Points 49011

La question n'est pas vraiment claire (par exemple, quel est le type de données...). Si vous voulez dire que vous devez mettre un message dans Exception :

throw new Exception (Data.Add("foo", "bar").ToString());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X