Menggunakan Jenis Pengecualian Standar
Catatan
Konten ini dicetak ulang oleh izin Pearson Education, Inc. dari Panduan Desain Kerangka Kerja: Konvensi, Idiom, dan Pola untuk Pustaka .NET yang Dapat Digunakan Kembali, Edisi ke-2. Edisi itu diterbitkan pada tahun 2008, dan buku tersebut telah sepenuhnya direvisi pada edisi ketiga. Beberapa informasi di halaman ini mungkin sudah kedaluarsa.
Bagian ini menjelaskan pengecualian standar yang disediakan oleh .NET Framework dan detail penggunaannya. Daftar ini sama sekali tidak lengkap. Silakan merujuk ke dokumentasi referensi .NET Framework untuk penggunaan jenis pengecualian .NET Framework lainnya.
Pengecualian and SystemException
❌ JANGAN melempar System.Exception atau System.SystemException.
❌ JANGAN menangkap System.Exception
atau System.SystemException
dalam kode kerangka kerja, kecuali jika Anda berniat untuk melempar kembali.
❌ HINDARI menangkap System.Exception
atau System.SystemException
, kecuali di penangan pengecualian tingkat atas.
ApplicationException
❌ JANGAN melempar atau mengambil dari ApplicationException.
InvalidOperationException
✔️️ LEMPAR InvalidOperationException jika objek dalam keadaan tidak pantas.
ArgumentException, ArgumentNullException, dan ArgumentOutOfRangeException
✔️️ LEMPAR ArgumentException atau salah satu subjenisnya jika argumen buruk diteruskan ke anggota. Pilih jenis pengecualian yang paling turunan, jika berlaku.
️✔️️ ATUR properti ParamName
saat melempar salah satu subkelas dari ArgumentException
.
Properti ini mewakili nama parameter yang menyebabkan pengecualian dilemparkan. Perhatikan bahwa properti dapat diatur menggunakan salah satu kelebihan konstruktor.
✔️️️ GUNAKAN value
untuk nama parameter nilai implisit dari setter properti.
NullReferenceException, IndexOutOfRangeException, dan AccessViolationException
❌ JANGAN izinkan API yang dapat dipanggil secara publik untuk secara eksplisit atau implisit melempar NullReferenceException, AccessViolationException, atau IndexOutOfRangeException. Pengecualian ini dicadangkan dan dilemparkan oleh mesin eksekusi dan dalam banyak kasus mengindikasikan bug.
Lakukan pemeriksaan argumen untuk menghindari melempar pengecualian ini. Melempar pengecualian ini memperlihatkan detail implementasi metode Anda yang mungkin berubah seiring waktu.
Pengecualian StackOverflow
❌ JANGAN secara eksplisit melempar StackOverflowException. Pengecualian harus secara eksplisit dilemparkan hanya oleh runtime bahasa umum.
❌ JANGAN tangkap StackOverflowException
.
Hampir tidak mungkin untuk menulis kode terkendali yang tetap konsisten dengan adanya luapan stack yang arbitrer. Bagian runtime bahasa umum yang tidak dikelola tetap konsisten, dengan menggunakan probe untuk memindahkan luapan stack ke tempat yang ditentukan dengan baik daripada meninggalkan stack luapan yang arbitrer.
OutOfMemoryException
❌ JANGAN secara eksplisit melempar OutOfMemoryException. Pengecualian ini harus dilemparkan hanya oleh infrastruktur runtime bahasa umum.
ComException, SEHException, dan ExecutionEngineException
❌ JANGAN secara eksplisit melempar COMException, ExecutionEngineException, dan SEHException. Pengecualian ini harus dilemparkan hanya oleh infrastruktur runtime bahasa umum.
Portions © 2005, 2009 Microsoft Corporation. Semua hak dilindungi undang-undang.
Dicetak ulang dengan izin dari Pearson Education, Inc. dari Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition oleh Krzysztof Cwalina dan Brad Abrams, diterbitkan 22 Okt 2008 oleh Addison-Wesley Professional sebagai bagian dari Seri Pengembangan Microsoft Windows.