Try-catch chaque ligne de code sans blocs try-catch individuels

c# expression-trees try-catch

Question

Je n'ai pas ce problème actuellement , mais on ne sait jamais, et penser que les expériences sont toujours amusantes.

En ignorant les problèmes évidents que vous auriez à résoudre avec votre architecture pour même tenter cela , supposons que vous disposiez d'un code horriblement écrit du design de quelqu'un d'autre et que vous deviez effectuer un grand nombre d'opérations variées dans le même code bloc, par exemple:

WidgetMaker.SetAlignment(57);
contactForm["Title"] = txtTitle.Text;
Casserole.Season(true, false);
((RecordKeeper)Session["CasseroleTracker"]).Seasoned = true;

Multiplié par cent. Certaines d’entre elles pourraient fonctionner, d’autres pourraient mal tourner. Ce dont vous avez besoin, c’est l’équivalent C # de «reprise d’erreur suivante», sinon vous allez finir par copier et coller des captures d’essai autour des nombreuses lignes de code.

Comment tenteriez-vous de résoudre ce problème?

Réponse acceptée

Il est assez évident que vous écriviez le code dans VB.NET, qui contient réellement On Error Resume Next , et l'exportiez dans une DLL vers C #. Tout le reste est juste un glouton pour punition.


Réponse populaire

public delegate void VoidDelegate();

public static class Utils
{
  public static void Try(VoidDelegate v) {
    try {
      v();
    }
    catch {}
  }
}

Utils.Try( () => WidgetMaker.SetAlignment(57) );
Utils.Try( () => contactForm["Title"] = txtTitle.Text );
Utils.Try( () => Casserole.Season(true, false) );
Utils.Try( () => ((RecordKeeper)Session["CasseroleTracker"]).Seasoned = true );



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi