Bagikan melalui


Menggunakan Jenis Pengecualian Standar

Nota

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 Kerangka Kerja dan detail penggunaannya. Daftar ini tidak berarti lengkap. Silakan lihat dokumentasi referensi .NET Framework untuk penggunaan jenis pengecualian Kerangka Kerja lainnya.

Pengecualian dan SystemException

❌ JANGAN melempar System.Exception atau System.SystemException.

❌ JANGAN menangkap System.Exception atau System.SystemException dalam kode kerangka kerja, kecuali Anda berniat untuk melempar ulang.

❌ HINDARI menangkap System.Exception atau System.SystemException, kecuali pada penangan pengecualian tingkat atas.

ApplicationException

❌ JANGAN melempar atau menggunakan ApplicationException sebagai dasar.

Pengecualian Operasi Tidak Valid

✔️ LAKUKAN melempar InvalidOperationException jika objek dalam status yang tidak pantas.

ArgumentException, ArgumentNullException, dan ArgumentOutOfRangeException

✔️ DO melempar ArgumentException atau salah satu subjenisnya jika argumen buruk diberikan kepada anggota. Lebih suka jenis pengecualian yang paling turunan, jika berlaku.

✔️ DO mengatur properti ParamName saat melemparkan salah satu subkelas dari ArgumentException.

Properti ini mewakili nama parameter yang menyebabkan pengecualian dilemparkan. Perhatikan bahwa properti dapat diatur menggunakan salah satu kelebihan beban konstruktor.

✔️ DO menggunakan value untuk nama parameter nilai implisit dari pengatur properti.

NullReferenceException, IndexOutOfRangeException, dan AccessViolationException

❌ JANGAN izinkan API yang dapat dipanggil secara publik untuk secara eksplisit atau implisit melemparkan NullReferenceException, , AccessViolationExceptionatau IndexOutOfRangeException. Pengecualian ini dicadangkan dan dikeluarkan oleh mesin pemroses dan sering kali menunjukkan bug.

Lakukan pemeriksaan argumen untuk menghindari melemparkan pengecualian ini. Melempar pengecualian ini mengungkap detail implementasi metode Anda yang mungkin berubah dari waktu ke waktu.

StackOverflowException

❌ JANGAN secara eksplisit melemparkan StackOverflowException. Pengecualian harus dilemparkan secara eksplisit hanya oleh CLR.

❌ JANGAN tangkap StackOverflowException.

Hampir tidak mungkin menulis kode terkelola yang tetap konsisten ketika terjadi kelebihan tumpukan yang sewenang-wenang. Bagian CLR yang tidak dikelola tetap konsisten dengan menggunakan sonde untuk mengalihkan kelebihan tumpukan ke tempat yang terdefinisi dengan baik daripada harus kembali dari kelebihan tumpukan yang sewenang-wenang.

OutOfMemoryException (Pengecualian Karena Kekurangan Memori)

❌ JANGAN secara eksplisit melemparkan OutOfMemoryException. Pengecualian ini hanya akan dilemparkan oleh infrastruktur CLR.

ComException, SEHException, dan ExecutionEngineException

❌ JANGAN secara eksplisit melemparkan COMException, ExecutionEngineException, dan SEHException. Pengecualian ini hanya boleh dilemparkan oleh infrastruktur CLR.

© Sebagian 2005, 2009 Microsoft Corporation. Seluruh hak cipta dilindungi.

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 oleh Krzysztof Cwalina dan Brad Abrams, diterbitkan 22 Okt 2008 oleh Addison-Wesley Professional sebagai bagian dari Seri Pengembangan Microsoft Windows.

Lihat juga