Pengendalian pengecualian
1. [Mandatori] Jangan tangkap kelas pengecualian runtime yang ditakrifkan dalam pustaka kelas Java yang diwarisi daripada RuntimeException, seperti: IndexOutOfBoundsException / NullPointerException Pengecualian sedemikian dielakkan oleh pengaturcara untuk menyemak untuk memastikan keteguhan program.
Contoh positif: if(obj != null) {...}
Contoh pembilang: cuba { obj.method() } catch(NullPointerException e){...}
2. Mandatori 】Pengecualian tidak boleh digunakan untuk kawalan proses atau kawalan bersyarat, kerana kecekapan pemprosesan pengecualian adalah lebih rendah daripada cawangan bersyarat.
3 [Wajib] Cuba - tangkap sebahagian besar kod, ini tidak bertanggungjawab. Apabila menangkap, sila bezakan antara kod stabil dan kod tidak stabil merujuk kepada kod yang tidak akan salah walau apa pun. Untuk tangkapan dalam kod yang tidak stabil, cuba bezakan jenis pengecualian sebanyak mungkin, dan kemudian kendalikan pengecualian yang sepadan. 4. [Wajib] Tangkap pengecualian untuk mengendalikannya. Jangan tangkap dan buang tanpa memproses apa-apa, sila buang pengecualian kepada pemanggilnya. Pengguna perniagaan paling luar mesti mengendalikan pengecualian dan menukarnya kepada kandungan
yang boleh difahami oleh pengguna. 5. [Mandatori] Letakkan blok percubaan dalam kod transaksi Selepas mendapat pengecualian, jika anda perlu melancarkan transaksi, anda mesti memberi perhatian untuk melancarkan semula transaksi secara manual.
6 [Mandatori] Blok akhirnya mesti menutup objek sumber dan objek strim, dan cuba tangkap jika terdapat pengecualian.
Nota:Jika JDK 7, anda boleh menggunakan kaedah cuba - dengan - sumber.
7. [Mandatori] Pulangan tidak boleh digunakan dalam blok akhirnya Selepas pulangan dalam blok akhirnya kembali, kaedah menamatkan pelaksanaan, dan pernyataan pulangan dalam blok cuba tidak akan dilaksanakan lagi.
8 [Wajib] Pengecualian yang ditangkap dan pengecualian yang dilemparkan mesti sepadan dengan tepat, atau pengecualian yang ditangkap ialah kelas induk bagi pengecualian yang dilemparkan.Nota:
Jika pihak lawan dijangka membaling bola hydrangea tetapi benar-benar menerima lontar peluru, situasi yang tidak dijangka akan berlaku. 9. [Disyorkan] Nilai pulangan kaedah boleh menjadi tidak wajib untuk mengembalikan koleksi kosong atau objek kosong. Pemanggil perlu melakukan pertimbangan batal untuk mengelakkan masalah NPE.Nota:
Protokol ini dengan jelas menyatakan bahawa mencegah NPE adalah tanggungjawab pemanggil. Walaupun kaedah yang dipanggil mengembalikan koleksi kosong atau objek kosong, pemanggil tidak akan dapat duduk dan berehat, dan mesti mempertimbangkan situasi di mana null dikembalikan dalam senario seperti kegagalan panggilan jauh dan pengecualian masa jalan.
10. [Cadangan] Mencegah NPE ialah latihan asas pengaturcara Beri perhatian kepada senario di mana NPE berlaku:1) Jenis pemulangan ialah jenis data yang dibungkus, yang mungkin batal Apabila mengembalikan nilai int, berhati-hati untuk menyemak nol.
Contoh pembilang: public int f() { return Integer object}; Jika ia adalah nol, ia akan secara automatik menyahkotak dan membuang NPE.
2) Hasil pertanyaan pangkalan data mungkin batal.
3) Walaupun elemen dalam koleksi adalahNotEmpty, elemen data yang diambil mungkin batal.
4) Pertimbangan NPE sentiasa diperlukan untuk objek yang dikembalikan melalui panggilan jauh.
5) Untuk data yang diperolehi dalam Sesi, adalah disyorkan untuk menyemak NPE untuk mengelakkan penunjuk nol.
6) Panggilan secara berperingkat getA() getC() . . aplikasi silang Keutamaan diberikan kepada menggunakan kaedah Hasil untuk panggilan RPC, dan isSuccess, "kod ralat" dan "maklumat ringkas ralat" dipasang.
Penjelasan: Sebab menggunakan kaedah Hasil untuk pemulangan kaedah RPC:
1) Menggunakan kaedah pemulangan pengecualian, ralat masa jalan akan berlaku jika pemanggil tidak menangkapnya.2) Jika anda tidak menambah maklumat tindanan, hanya pengecualian tersuai baharu, dan menambah pemahaman anda sendiri tentang mesej ralat, ia tidak akan banyak membantu untuk menamatkan panggilan untuk menyelesaikan masalah. Jika maklumat timbunan ditambah, dalam kes ralat panggilan yang kerap, kehilangan prestasi pensirian data dan penghantaran juga menjadi masalah.
12. [Cadangan] Bezakan pengecualian yang tidak ditanda / ditanda semasa menentukan, elakkan menggunakan RuntimeException untuk melontar terus,tidak dibenarkan membuang Exception atau Throwable, dan menggunakan pengecualian tersuai dengan maksud perniagaan. Kami mengesyorkan pengecualian tersuai yang telah ditakrifkan dalam industri, seperti: DAOException / ServiceException, dsb. 13 [Rujukan] Elakkan kod pendua (Jangan Ulang Sendiri), iaitu prinsip KERING.
Nota: Menyalin dan menampal kod sesuka hati sudah pasti akan membawa kepada penduaan kod Apabila anda perlu mengubah suainya pada masa hadapan, anda perlu mengubah suai semua salinan, yang mudah terlepas. Ekstrak kaedah biasa, kelas awam abstrak, atau bahkan modul dikongsi apabila perlu.
Contoh positif:Terdapat berbilang kaedah awam dalam kelas, dan kesemuanya perlu melaksanakan beberapa baris operasi pengesahan parameter yang sama Pada masa ini, sila ekstrak:
pemeriksaan boolean peribadi(DTO dto){. ..}