Best Practices für die Ausnahmebehandlung in Aufgaben
Übersicht
Ausnahmen in System.Threading verwalten .Tasks.Task
C# 5.0 und höher
In C# 5.0 und höher werden Async und Wait vereinfacht Ausnahmebehandlung. Anstelle der Verwendung von ContinueWith ermöglichen asynchrone Methoden die direkte Verwendung von Try/Catch-Blöcken.
try { // Start the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // Await the task. await task; } catch (Exception e) { // Perform cleanup here. }
C# 4.0 und niedriger
Für frühere Versionen von C# bietet ContinueWith eine alternativer Ansatz. Durch die Angabe von TaskContinuationOptions.OnlyOnFaulted können Sie festlegen, dass eine Fortsetzung nur ausgeführt werden soll, wenn die Aufgabe einen Fehler verursacht hat:
// Get the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
Mehrere Fortsetzungen
Mehrere Fortsetzungen können beide Ausnahmen behandeln und erfolgreiche Fälle:
// For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion);
Basisklasse für Unified Exception Behandlung
In einigen Szenarien kann eine Basisklasse einen zentralisierten Mechanismus für die Ausnahmebehandlung über mehrere Klassen hinweg bereitstellen. Ihre Basisklassenimplementierung könnte eine Methode zum Verwalten von Ausnahmen in Aufrufen von ContinueWith enthalten. Allerdings bietet dieser Ansatz möglicherweise keine wesentlichen Vorteile gegenüber den oben genannten Techniken, insbesondere bei der Verwendung von Async und Wait.
Durch die Befolgung dieser Best Practices können Sie Ausnahmen in Aufgaben effektiv behandeln und so die Stabilität und Zuverlässigkeit Ihres Codes sicherstellen.
Das obige ist der detaillierte Inhalt vonWie behandelt man Ausnahmen in C#-Aufgaben am besten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!