Pengendalian pengecualian yang cekap: tangkap berbilang pengecualian pada masa yang sama
Pengendalian pengecualian ialah bahagian penting dalam pembangunan perisian, yang memastikan kestabilan dan keteguhan kod. Walaupun disyorkan untuk menangkap pengecualian khusus dan bukannya System.Exception
generik, ini boleh membawa kepada kod bertele-tele dan berulang. Adakah terdapat senario yang lebih mudah di mana pelbagai pengecualian perlu dikendalikan dengan cara yang sama?
Pertimbangkan coretan kod berikut:
<code class="language-csharp">try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; }</code>
Di sini, berbilang pengecualian ditangkap dan dikendalikan secara berasingan, menetapkan semula WebId
kepada nilai lalai. Struktur berulang ini boleh menyusahkan dalam senario yang lebih kompleks di mana objek perlu diubah suai beberapa kali.
Nasib baik, terdapat penyelesaian yang menggabungkan kekhususan pengendalian pengecualian dengan kecekapan menangkap berbilang pengecualian sekaligus. Anda boleh mengendalikan berbilang pengecualian dengan satu blok kod dengan menangkap System.Exception
generik dan menggunakan pernyataan switch
pada jenisnya:
<code class="language-csharp">catch (Exception ex) { if (ex is FormatException || ex is OverflowException) { WebId = Guid.Empty; } else { throw; } }</code>
Dalam kaedah ini, kod menyemak jenis pengecualian menggunakan operator is
dan mengendalikan pengecualian khusus dengan menetapkan WebId
kepada nilai yang sesuai. Jika pengecualian bukan salah satu jenis yang diketahui, ia dilemparkan semula untuk pengendalian yang lebih khusus pada tahap yang lebih tinggi.
Teknik ini menggabungkan kecekapan menangkap berbilang pengecualian dengan fleksibiliti mengendalikan jenis pengecualian tertentu. Ia membantu mengurangkan pertindihan kod, meningkatkan kebolehbacaan dan memastikan pengendalian ralat yang betul dalam senario yang kompleks.
Atas ialah kandungan terperinci Bolehkah Pelbagai Pengecualian Dikendalikan Serentak untuk Kod yang Lebih Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!