Apabila bekerja dengan Tugas
Dalam C# 5.0 dan lebih baru, kata kunci async dan menunggu dipermudahkan pengaturcaraan berasaskan tugas dengan ketara. Daripada bergantung pada ContinueWith, kaedah async membolehkan anda menggunakan blok cuba/tangkap terus untuk mengendalikan pengecualian:
try { // Start the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // Await the task. await task; } catch (Exception e) { // Perform cleanup here. }
Untuk versi C# yang lebih lama, yang berlebihan ContinueWith dengan penghitungan TaskContinuationOptions boleh digunakan:
// Get the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
OnlyOnFaulted memastikan bahawa kesinambungan dilaksanakan hanya apabila tugas anteseden membuang pengecualian. Berbilang kesinambungan boleh dirantai untuk mengendalikan kes yang berbeza:
// For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion);
Sama ada anda memilih pendekatan async/menunggu atau teknik ContinueWith with TaskContinuationOptions, kaedah ini memperkasakan anda untuk menangkap pengecualian dalam tugas C# secara berkesan, memastikan aplikasi anda mengendalikan ralat yang tidak dijangka dengan anggun.
Atas ialah kandungan terperinci Bagaimanakah Saya Mengendalikan Pengecualian dalam Tugasan C# (Async/Await dan ContinueWith)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!