Amalan Terbaik untuk Pengendalian Pengecualian dalam Tugasan
Gambaran Keseluruhan
Menguruskan pengecualian dalam System.Threading .Tasks.Task
C# 5.0 dan Ke Atas
Dalam C# 5.0 dan lebih baharu, async dan tunggu permudahkan pengendalian pengecualian. Daripada menggunakan ContinueWith, kaedah async membenarkan penggunaan terus blok try/catch.
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 dan Di Bawah
Untuk versi C# yang lebih awal, ContinueWith menyediakan pendekatan alternatif. Dengan menentukan TaskContinuationOptions.OnlyOnFaulted, anda boleh menentukan bahawa kesinambungan hanya perlu dilaksanakan jika tugasan itu rosak:
// Get the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
Berbilang Sambungan
Berbilang sambungan boleh mengendalikan kedua-duanya luar biasa dan berjaya kes:
// For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion);
Kelas Asas untuk Pengendalian Pengecualian Bersatu
Dalam sesetengah senario, kelas asas boleh menyediakan mekanisme terpusat untuk pengendalian pengecualian merentas berbilang kelas. Pelaksanaan kelas asas anda boleh termasuk kaedah untuk mengurus pengecualian dalam panggilan ke ContinueWith. Walau bagaimanapun, pendekatan ini mungkin tidak menawarkan kelebihan yang ketara berbanding teknik yang dinyatakan di atas, terutamanya apabila menggunakan async dan menunggu.
Dengan mengikuti amalan terbaik ini, anda boleh mengendalikan pengecualian dalam Tasks dengan berkesan, memastikan kestabilan dan kebolehpercayaan kod anda.
Atas ialah kandungan terperinci Bagaimana Cara Terbaik Mengendalikan Pengecualian dalam Tugasan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!