Dalam kod C# segerak, pengecualian menyebarkan timbunan panggilan sehingga ia mencapai blok tangkapan yang sesuai yang boleh mengendalikan pengecualian. Walau bagaimanapun, pengendalian pengecualian dalam kaedah tak segerak tidaklah semudah itu.
Kaedah tak segerak dalam C# boleh mempunyai tiga jenis nilai pulangan: batal, Tugas dan Tugas. Apabila pengecualian berlaku dalam kaedah tak segerak dengan jenis pemulangan Tugas atau Tugas , objek pengecualian dibalut dalam contoh AggregateException dan dilampirkan pada objek Tugas.
Jika berbilang pengecualian dilemparkan, semua pengecualian akan dilemparkan. Mereka disimpan dalam objek Tugas.
static async Task Main(string[] args) { await DoSomething(); Console.ReadLine(); } public static async Task Foo() { throw new ArgumentNullException(); } public static async Task DoSomething(){ try{ await Foo(); } catch (ArgumentNullException ex){ Console.WriteLine(ex); } }
System.ArgumentNullException: Value cannot be null. at DemoApplication.Program.Foo() in C:\Users\Koushik\Desktop\Questions\ConsoleApp\Program.cs:line 37 at DemoApplication.Program.DoSomething() in C:\Users\Koushik\Desktop\Questions\ConsoleApp\Program.cs:line 44
Atas ialah kandungan terperinci Bagaimana untuk menangkap pengecualian yang dilemparkan oleh kaedah async void dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!