Menggunakan Pernyataan Java

1. Perkenalan

Kata kunci Java assert memungkinkan pengembang untuk dengan cepat memverifikasi asumsi atau status program tertentu.

Pada artikel ini, kita akan melihat bagaimana menggunakan kata kunci assert Java .

2. Sejarah Pernyataan Java

Kata kunci assert Java diperkenalkan di Java 1.4, jadi sudah ada cukup lama. Namun, ini tetap merupakan kata kunci yang kurang dikenal yang dapat secara drastis mengurangi boilerplate dan membuat kode kita lebih mudah dibaca.

Misalnya, sering kali dalam kode kita, kita perlu memverifikasi kondisi tertentu yang mungkin mencegah aplikasi kita berfungsi dengan baik. Biasanya kami akan menulis sesuatu seperti ini:

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

Menggunakan pernyataan kita dapat menghapus pernyataan if dan throw dengan satu pernyataan assert .

3. Mengaktifkan Pernyataan Java

Karena pernyataan Java menggunakan kata kunci assert , tidak diperlukan pustaka atau paket untuk diimpor.

Perhatikan bahwa sebelum Java 1.4 menggunakan kata “assert” untuk penamaan variabel, metode, dll. Hal ini berpotensi menciptakan bentrokan penamaan saat menggunakan kode yang lebih lama dengan versi JVM yang lebih baru adalah legal.

Oleh karena itu, untuk kompatibilitas mundur, JVM menonaktifkan validasi pernyataan secara default . Mereka harus secara eksplisit diaktifkan menggunakan argumen baris perintah -enableassertions , atau singkatan -ea:

java -ea com.baeldung.assertion.Assertion

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

Kami juga dapat mengaktifkan pernyataan untuk paket dan kelas tertentu:

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

Di sini, kami telah mengaktifkan pernyataan untuk semua kelas dalam paket com.baeldung.assertion .

Demikian juga, mereka dapat dinonaktifkan untuk paket tertentu dan kelas menggunakan -disableassertions perintah argumen baris, atau singkatan yang -Da . Kita juga bisa menggunakan keempat argumen ini secara bersamaan.

4. Menggunakan Pernyataan Java

Untuk menambahkan pernyataan, cukup gunakan kata kunci assert dan berikan kondisi boolean :

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

Java juga menyediakan sintaks kedua untuk pernyataan yang mengambil string, yang akan digunakan untuk membangun AssertionError jika dilempar:

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

Dalam kedua kasus tersebut, kode memeriksa bahwa koneksi ke sumber daya eksternal mengembalikan nilai bukan nol. Jika nilainya null, JVM secara otomatis akan menampilkan AssertionError .

Dalam kasus kedua, pengecualian akan memiliki detail tambahan yang akan muncul di pelacakan tumpukan dan dapat membantu dalam men-debug masalah.

Mari kita lihat hasil dari menjalankan kelas kita dengan pernyataan yang 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. Menangani AssertionError

Kelas AssertionError memperluas Error , yang dengan sendirinya memperluas Throwable . Ini berarti AssertionError adalah pengecualian yang tidak dicentang.

Oleh karena itu metode yang menggunakan pernyataan tidak diperlukan untuk mendeklarasikannya, dan kode pemanggil selanjutnya tidak boleh mencoba dan menangkapnya.

AssertionErrors dimaksudkan untuk menunjukkan kondisi yang tidak dapat dipulihkan dalam aplikasi, jadi jangan pernah mencoba menanganinya atau mencoba memulihkannya.

6. Praktik Terbaik

Hal terpenting untuk diingat tentang pernyataan adalah bahwa pernyataan tersebut dapat dinonaktifkan, jadi jangan pernah berasumsi bahwa pernyataan tersebut akan dieksekusi .

Oleh karena itu, ingatlah hal-hal berikut saat menggunakan pernyataan:

  • Selalu periksa nilai null dan Opsional kosong jika sesuai
  • Hindari menggunakan pernyataan untuk memeriksa masukan ke dalam metode publik dan sebagai gantinya gunakan pengecualian yang tidak dicentang seperti IllegalArgumentException atau NullPointerException
  • Jangan panggil metode dalam kondisi pernyataan dan alih-alih tetapkan hasil metode ke variabel lokal dan gunakan variabel itu dengan assert
  • Pernyataan sangat bagus untuk tempat-tempat dalam kode yang tidak akan pernah dieksekusi, seperti kasus default dari pernyataan switch atau setelah loop yang tidak pernah selesai

7. Kesimpulan

Kata kunci Java assert telah tersedia selama bertahun-tahun tetapi tetap menjadi fitur bahasa yang sedikit diketahui. Ini dapat membantu menghapus banyak kode boilerplate, membuat kode lebih mudah dibaca, dan membantu mengidentifikasi bug di awal pengembangan program.

Ingatlah bahwa pernyataan tidak diaktifkan secara default, jadi jangan pernah berasumsi bahwa pernyataan tersebut akan dijalankan saat digunakan dalam kode.

Seperti biasa, kode sumber lengkap tersedia di GitHub.