Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Berkesan Mengendalikan Pengecualian dalam Tugasan C#?

Bagaimanakah Saya Berkesan Mengendalikan Pengecualian dalam Tugasan C#?

DDD
DDDasal
2024-12-29 01:53:14497semak imbas

How Do I Effectively Handle Exceptions in C# Tasks?

Pengendalian Pengecualian dalam Tugas

Menangkap pengecualian yang dibangkitkan dalam System.Threading.Tasks.Task adalah penting untuk memastikan aplikasi anda berfungsi dengan lancar. Berikut ialah perbincangan tentang pendekatan terbaik untuk mengendalikan pengecualian dalam Tasks, berdasarkan versi C# pilihan anda.

C# 5.0 dan Ke Atas

Dengan pengenalan async dan menunggu kata kunci, pengendalian pengecualian dalam Tasks menjadi ketara lebih mudah. Anda boleh menggunakan blok cuba-tangkap dalam kaedah async untuk menangkap pengecualian seperti berikut:

try
{
    var task = Task.Factory.StartNew<StateObject>(() => { /* action */ });
    await task;
}
catch (Exception e)
{
    // Perform cleanup here.
}

Ingat untuk menandakan kaedah pengekapan dengan kata kunci async untuk mendayakan penggunaan tunggu.

C# 4.0 dan Di Bawah

Untuk versi C# yang lebih awal, anda boleh mengendalikan pengecualian menggunakan kelebihan ContinueWith yang menerima nilai TaskContinuationOptions:

var task = Task.Factory.StartNew<StateObject>(() => { /* action */ });

task.ContinueWith(t => { /* error handling */ }, context,
    TaskContinuationOptions.OnlyOnFaulted);

TaskContinuationOptions.OnlyOnFaulted menyatakan bahawa kesinambungan hanya perlu dilaksanakan apabila tugas anteseden membuang pengecualian.

Anda juga boleh mengendalikan kes bukan luar biasa dengan berbilang panggilan ke ContinueWith :

task.ContinueWith(t => { /* error handling */ }, context, 
    TaskContinuationOptions.OnlyOnFaulted);

task.ContinueWith(t => { /* on success */ }, context,
    TaskContinuationOptions.OnlyOnRanToCompletion);

task.Start();

Kaedah ini menawarkan pendekatan yang berbeza untuk pengendalian pengecualian dalam Tugasan, memberikan fleksibiliti dan penyesuaian berdasarkan versi C# anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Berkesan Mengendalikan Pengecualian dalam Tugasan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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