Menggunakan Tegasan Java

1. Pengenalan

Kata kunci penegasan Java membolehkan pemaju mengesahkan andaian atau keadaan program dengan cepat.

Dalam artikel ini, kita akan melihat bagaimana menggunakan kata kunci penegasan Java .

2. Sejarah Tegasan Java

Kata kunci penegasan Java diperkenalkan di Java 1.4, sehingga sudah cukup lama. Walau bagaimanapun, ia tetap menjadi kata kunci yang sedikit diketahui yang dapat mengurangkan plat boiler secara drastik dan menjadikan kod kami lebih mudah dibaca.

Sebagai contoh, sering kali dalam kod kita perlu mengesahkan keadaan tertentu yang mungkin menghalang aplikasi kita berfungsi dengan baik. Biasanya kita akan menulis sesuatu seperti ini:

Connection conn = getConnection(); if(conn == null) { throw new RuntimeException("Connection is null"); }

Menggunakan dakwaan kita boleh mengeluarkan jika dan lontaran kenyataan dengan satu ceritakan kenyataan.

3. Mengaktifkan Tegasan Java

Kerana dakwaan Java menggunakan ceritakan kata kunci, tiada perpustakaan diperlukan atau pakej import.

Perhatikan bahawa sebelum Java 1.4 adalah sah untuk menggunakan kata "assert" untuk menamakan pemboleh ubah, kaedah, dll. Ini berpotensi menimbulkan pertembungan penamaan ketika menggunakan kod lama dengan versi JVM yang lebih baru.

Oleh itu, untuk keserasian ke belakang, JVM melumpuhkan pengesahan penegasan secara lalai . Mereka mesti diaktifkan secara eksplisit menggunakan sama ada argumen baris perintah -enableassertions , atau singkatannya -ea:

java -ea com.baeldung.assertion.Assertion

Dalam contoh ini, kami telah mengaktifkan penegasan untuk semua kelas.

Kami juga dapat mengaktifkan pernyataan untuk pakej dan kelas tertentu:

java -ea:com.baeldung.assertion... com.baeldung.assertion.Assertion

Di sini, kami telah mengaktifkan penegasan untuk semua kelas dalam pakej com.baeldung.assertion .

Begitu juga, mereka boleh dimatikan untuk pakej tertentu dan kelas menggunakan -disableassertions perintah garis hujah, atau trengkas yang -da . Kita juga dapat menggunakan keempat-empat hujah ini bersama-sama.

4. Menggunakan Tegasan Java

Untuk menambahkan pernyataan, gunakan kata kunci tegas dan berikan syarat boolean :

public void setup() { Connection conn = getConnection(); assert conn != null; }

Java juga menyediakan sintaks kedua untuk penegasan yang mengambil rentetan, yang akan digunakan untuk membina AssertionError jika seseorang dilemparkan:

public void setup() { Connection conn = getConnection(); assert conn != null : "Connection is null"; }

Dalam kedua kes tersebut, kod tersebut memeriksa bahawa sambungan ke sumber luaran mengembalikan nilai yang tidak kosong. Sekiranya nilai itu nol, JVM secara automatik akan membuang AssertionError .

Dalam kes kedua, pengecualian akan mempunyai perincian tambahan yang akan muncul dalam jejak tumpukan dan dapat membantu dalam menyelesaikan masalah.

Mari lihat hasil menjalankan kelas kami dengan penegasan diaktifkan:

Exception in thread "main" java.lang.AssertionError: Connection is null at com.baeldung.assertion.Assertion.setup(Assertion.java:15) at com.baeldung.assertion.Assertion.main(Assertion.java:10)

5. Mengendalikan AssertionError

Kelas AssertionError memanjangkan Ralat , yang dengan sendirinya meluaskan Throwable . Ini bermaksud bahawa AssertionError adalah pengecualian yang tidak dicentang.

Oleh itu kaedah yang menggunakan penegasan tidak diperlukan untuk menyatakannya, dan kod panggilan selanjutnya tidak boleh mencuba dan menangkapnya.

AssertionErrors dimaksudkan untuk menunjukkan keadaan yang tidak dapat dipulihkan dalam aplikasi, jadi jangan sekali-kali cuba mengatasinya atau mencuba pemulihan.

6. Amalan Terbaik

Perkara yang paling penting untuk diingat mengenai pernyataan adalah bahawa mereka boleh dilumpuhkan, jadi jangan sekali-kali menganggap mereka akan dihukum mati .

Oleh itu, ingatlah perkara-perkara berikut semasa menggunakan penegasan:

  • Sentiasa periksa nilai nol dan Pilihan kosong jika sesuai
  • Elakkan menggunakan penegasan untuk memeriksa input ke kaedah awam dan sebaliknya gunakan pengecualian yang tidak dicentang seperti IllegalArgumentException atau NullPointerException
  • Jangan panggil kaedah dalam keadaan penegasan dan sebaliknya memberikan hasil daripada kaedah untuk pembolehubah tempatan dan menggunakan pembolehubah yang dengan ceritakan
  • Tegasan sangat bagus untuk tempat dalam kod yang tidak akan pernah dilaksanakan, seperti kes lalai dari pernyataan beralih atau selepas gelung yang tidak pernah selesai

7. Kesimpulannya

Kata kunci penegasan Java telah tersedia selama bertahun-tahun tetapi tetap menjadi ciri bahasa yang kurang dikenali. Ini dapat membantu membuang banyak kod pelat boiler, membuat kod lebih mudah dibaca, dan membantu mengenal pasti bug pada awal pengembangan program.

Ingatlah bahawa penegasan tidak diaktifkan secara lalai, jadi jangan sekali-kali menganggapnya akan dilaksanakan ketika digunakan dalam kod.

Seperti biasa, kod sumber penuh tersedia di GitHub.