Ich vermisse Visual Basic "On Error Resume Next" in C #. Wie soll ich jetzt Fehler melden?

In Visual Basic habe ich gerade geschriebenOn Error Resume Next im kopf meines programms wurden fehler und fehler im gesamten projekt unterdrückt.

Hier in C # vermisse ich dieses Feature sehr. Das Üblichetry-catch Die Handhabung jedes einzelnen Vorgangs ist nicht nur sehr zeitintensiv, sondern führt auch zu unerwünschten Effekten. Wenn ein Fehler auftritt, wird der Code nicht ausgeführt, auch wenn er behandelt wirdfortsetzen von dem Punkt an, an dem es auftrat. MitOn Error Resume NextWird der Code an der Fehlerstelle fortgesetzt und nur der Funktionsaufruf übersprungen, der den Fehler verursacht hat.

Ich bin noch nicht tief mit C # befasst, aber vielleicht gibt es in C # eine bessere Fehlerbehandlung als das Grundelementtry-catch.

Ich hätte auch gerne den Modul- oder Funktionsnamen, unter dem der Fehler aufgetreten ist, sowie die Zeilennummer in meiner Fehlermeldung. DasException Klasse bietet diese Funktionen nicht so weit ich weiß. Irgendwelche Ideen (natürlich verwaltet, ohne Prozessklassen in meiner eigenen Anwendung einzubeziehen)?

Wie gehen Sie mit Fehlern in größeren Projekten um? Ich hoffe ich muss keine hinzufügentry-catch zu jeder Methode. Irgendwie wirft C # viele Fehler auf - das scheint typisch für die Sprache zu sein.

Meine Lösung, die ich gefunden habe, um einige meiner Probleme zu lösen:

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
    }

    [STAThread]
    static void Main()
    {
      Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); //setup global error handler
      Application.Run(new Form1());
    }

    private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
    {   
            MessageBox.Show("Unhandled exception: " + e.Exception.ToString()); //get all error information with line and procedure call
            Environment.Exit(e.Exception.GetHashCode()); //return the error number to the system and exit the application
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string s = ""; s.Substring(1, 5); //Produce an error
    }

   }

Antworten auf die Frage(6)

Ihre Antwort auf die Frage