Sebagai pertanyaan subjektif, ini harus ditutup, tetapi karena masih terbuka:
Ini adalah bagian dari kebijakan internal yang digunakan di tempat kerja saya sebelumnya dan itu bekerja dengan sangat baik. Ini semua dari ingatan jadi saya tidak dapat mengingat kata-kata yang tepat. Perlu dicatat bahwa mereka tidak menggunakan pengecualian yang diperiksa, tetapi itu berada di luar cakupan pertanyaan. Pengecualian yang tidak dicentang yang mereka gunakan jatuh ke dalam 3 kategori utama.
NullPointerException: Jangan melempar dengan sengaja. NPE harus dibuang hanya oleh VM ketika referensi referensi nol. Semua upaya yang mungkin harus dilakukan untuk memastikan bahwa ini tidak pernah dibuang. @Nullable dan @NotNull harus digunakan bersama dengan alat analisis kode untuk menemukan kesalahan ini.
IllegalArgumentException: Dilemparkan ketika argumen ke suatu fungsi tidak sesuai dengan dokumentasi publik, sehingga kesalahan dapat diidentifikasi dan dijelaskan dalam hal argumen yang diteruskan. Situasi OP akan jatuh ke dalam kategori ini.
IllegalStateException: Dilemparkan ketika suatu fungsi dipanggil dan argumennya tidak terduga pada saat dilewatkan atau tidak sesuai dengan keadaan objek yang digunakan oleh metode tersebut.
Misalnya, ada dua versi internal dari IndexOutOfBoundsException yang digunakan dalam hal-hal yang memiliki panjang. Satu sub-kelas IllegalStateException, digunakan jika indeks lebih besar dari panjangnya. Subclass lain dari IllegalArgumentException, digunakan jika indeksnya negatif. Ini karena Anda bisa menambahkan lebih banyak item ke objek dan argumennya akan valid, sementara angka negatif tidak pernah valid.
Seperti yang saya katakan, sistem ini bekerja dengan sangat baik, dan butuh seseorang untuk menjelaskan mengapa perbedaan itu ada: "Tergantung pada jenis kesalahan itu cukup mudah bagi Anda untuk mencari tahu apa yang harus dilakukan. Bahkan jika Anda tidak dapat benar-benar mencari tahu mencari tahu apa yang salah Anda bisa mencari tahu di mana untuk menangkap kesalahan itu dan membuat informasi debugging tambahan. "
NullPointerException: Tangani case Null atau masukkan pernyataan agar NPE tidak terlempar. Jika Anda memasukkan pernyataan hanya satu dari dua jenis lainnya. Jika memungkinkan, lanjutkan men-debug seolah-olah pernyataan itu ada di sana.
IllegalArgumentException: Anda memiliki sesuatu yang salah di situs panggilan Anda. Jika nilai yang diteruskan berasal dari fungsi lain, cari tahu mengapa Anda menerima nilai yang salah. Jika Anda memasukkan salah satu argumen Anda menyebarkan kesalahan memeriksa tumpukan panggilan sampai Anda menemukan fungsi yang tidak mengembalikan apa yang Anda harapkan.
IllegalStateException: Anda belum memanggil fungsi Anda dalam urutan yang benar. Jika Anda menggunakan salah satu argumen Anda, periksa dan buang IllegalArgumentException yang menjelaskan masalah tersebut. Anda kemudian dapat merambatkan pipi ke atas tumpukan sampai Anda menemukan masalah.
Ngomong-ngomong, maksudnya adalah Anda hanya bisa menyalin IllegalArgumentAssertions ke tumpukan. Tidak ada cara bagi Anda untuk menyebarkan IllegalStateExceptions atau NullPointerExceptions ke atas tumpukan karena mereka ada hubungannya dengan fungsi Anda.