Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Mengendalikan Pengecualian dalam Tugasan C# (Async/Await dan ContinueWith)?

Bagaimanakah Saya Mengendalikan Pengecualian dalam Tugasan C# (Async/Await dan ContinueWith)?

DDD
Lepaskan: 2025-01-03 15:48:39
asal
555 orang telah melayarinya

How Do I Handle Exceptions in C# Tasks (Async/Await and ContinueWith)?

Pengendalian Pengecualian dalam Tugasan C#

Apabila bekerja dengan Tugas, pengendalian pengecualian adalah penting untuk memastikan aplikasi yang mantap dan responsif. Artikel ini meneroka dua pendekatan untuk menangkap pengecualian, bergantung pada versi C# yang digunakan.

C# 5.0 dan Di Atas: Async and Await

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.
}
Salin selepas log masuk

C# 4.0 dan Di Bawah: ContinueWith dengan TaskContinuationOptions

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan