Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Panggil Kaedah Async dengan Selamat dalam C# Tanpa Menggunakan `menunggu` dan Masih Mengendalikan Pengecualian?
await
Kod yang disediakan menunjukkan cara memanggil kaedah tak segerak MyAsyncMethod()
tanpa menggunakan await
. Amalan ini menjana amaran dan berpotensi menyenyapkan pengecualian. Artikel ini membentangkan penyelesaian untuk mengendalikan pengecualian dengan berkesan sambil mengabaikan hasil operasi tak segerak.
Kaedah 1: ContinueWith
untuk Pengendalian Pengecualian
Pendekatan ini menggunakan kaedah ContinueWith
untuk mengurus pengecualian secara tak segerak daripada MyAsyncMethod()
:
<code class="language-csharp">MyAsyncMethod() .ContinueWith(t => Console.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted);</code>
Coretan kod ini melampirkan tugasan kesinambungan pada MyAsyncMethod()
. Jika MyAsyncMethod()
melontar pengecualian, tugas kesinambungan akan dilaksanakan, menulis butiran pengecualian pada konsol pada urutan yang berasingan.
Kaedah 2: await
dan try-catch
untuk Pengurusan Pengecualian Tepat
Sebagai alternatif, menggunakan await
dan blok try-catch
menawarkan pengendalian pengecualian yang lebih berbutir:
<code class="language-csharp">try { await MyAsyncMethod().ConfigureAwait(false); } catch (Exception ex) { Trace.WriteLine(ex); }</code>
Kaedah ini menyediakan pengendalian pengecualian yang disasarkan melalui try-catch
. ConfigureAwait(false)
menghalang pengecualian daripada disusun kembali ke konteks asal, membenarkan urutan semasa meneruskan pelaksanaannya.
Kedua-dua kaedah memastikan keselamatan pengecualian apabila memanggil kaedah tak segerak tanpa menunggu keputusannya. Pilih pendekatan yang paling sesuai dengan keperluan khusus anda dan keperluan pengendalian pengecualian.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Panggil Kaedah Async dengan Selamat dalam C# Tanpa Menggunakan `menunggu` dan Masih Mengendalikan Pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!