JavaRush /Java Blog /Random-ID /Terjemahan: 6 Pengecualian Java yang mengganggu pendatang...
profeg
Level 18

Terjemahan: 6 Pengecualian Java yang mengganggu pendatang baru di Java.

Dipublikasikan di grup Random-ID

6 Pengecualian Java yang menghantui pemula Java.

(Asli) (Saya baru mengenal Java dan Inggris, jadi saya akan dengan senang hati menerima kritik dan bantuan) Baik dulu maupun sekarang, saya menjumpai banyak pemula Java yang mempunyai masalah dengan beberapa pengecualian umum yang harus saya jelaskan sekali lagi. Saya yakin pengembang Java Senior lainnya memiliki masalah yang sama saat mencoba membantu pemula menangani pengecualian ini. Jadi, saya menulis artikel ini untuk pengembangan saya sendiri. Silakan mengomentari artikel ini atau menambahkan pengecualian pada daftar di bawah.
1. Kesalahan Tidak Ada KelasDefFound
Ini adalah salah satu pengecualian, dengan pesan seperti “Exception in thread “main” NoClassDefFoundError” , yang ditemui sebagian besar pengembang Java baru di dunia pemrograman Java. Seorang pemula menulis program yang menampilkan “Halo dunia!”, masuk ke baris perintah, mengetik “java…”, tekan enter dan BAM! =). Dan mencari tahu cara membuat program mencetak “Halo dunia!” di monitor, memerlukan waktu. NoClassDefFoundError terjadi ketika Java Virtual Machine (JVM) mencoba mengakses kelas pada waktu startup dan kelas tersebut tidak ditemukan, meskipun kelas yang sama ditemukan pada waktu kompilasi. Paling sering pengecualian ini terjadi ketika mencoba menjalankan program menggunakan perintah "java" dan classpath tidak disetel dengan benar. Berikut penjelasan alasan mengapa pengecualian ini terjadi.
  • Kelas tidak tersedia di -classpath.
  • Variabel lingkungan CLASSPATH telah diganti. Anda dapat memeriksa keberadaan dan kebenarannya menggunakan perintah Windows “set”.
Solusi untuk masalah ini dijelaskan lebih rinci di sini.
Selain itu, Anda perlu memahami perbedaan antara variabel lingkungan CLASSPATH dan kunci juru bahasa -classpath. Para profesional tidak merekomendasikan penggunaan CLASSPATH. Cara terbaik adalah dengan meneruskan kunci -classpath ke juru bahasa.
2. Pengecualian ClassNotFound
ClassNotFoundException adalah pengecualian lain yang menjadi mimpi buruk bagi pemula segera setelah dia memulai pemrograman. Menariknya, rata-rata pengembang Java sering bingung antara pengecualian ClassNotFoundException dan NoClassDefFoundError . Oleh karena itu, perbedaan antara kedua pengecualian ini tetap menjadi salah satu pertanyaan yang paling sering diajukan dalam wawancara untuk posisi Junior . ClassNotFoundException terjadi ketika JVM mencoba memuat kelas tertentu dan tidak menemukannya di classpath. Salah satu tempat umum di mana pengembang Java baru pertama kali menemukannya adalah menghubungkan ke database menggunakan perpustakaan JDBC. Di sana kami akan mencoba memuat driver menggunakan kode seperti Class.forName("JDBCdriver"). Artikel bagus tentang ClassNotFoundException ada di sini . Mencoba memahami konsep Java Classloaders adalah metode paling efektif untuk mengatasi masalah ini. Anda dapat membaca cara mengkonfigurasi classpath Java di lingkungan Win/Unix . Sebagaimana dinyatakan dalam dokumen Java , pengecualian terjadi dalam kasus berikut:
  • Anda mencoba memuat kelas menggunakan metode Class.forName dan file .class tidak ada di classpath. Ini adalah skenario paling umum dari tiga skenario yang tercantum di sini.
  • Saat pemuat kelas mencoba memuat kelas menggunakan loadClass.
  • Saat pemuat kelas mencoba memuat kelas menggunakan findSystemClass.
3. Pengecualian NullPointer
Pengecualian ini lebih mudah dipahami oleh pemula dibandingkan dua pengecualian pertama. Selain itu, pengecualian ini mudah diidentifikasi karena ketika itu terjadi, pesan tentang pengecualian menunjukkan nomor baris dalam program tempat hal itu terjadi. Pengecualian ini terjadi ketika JVM mencoba mengakses suatu objek atau mencoba memanggil metode pada suatu objek dan menerima null alih-alih referensi ke objek tersebut. Java Doc juga menyatakan alasan berikut:
  • Mengakses atau mengubah metode pada objek yang tidak valid. (yaitu alih-alih referensi ke objek JVM, ia mendapat null)
  • Mendapatkan panjang array saat tidak valid. (tidak diinisialisasi misalnya)
  • Upaya telah dilakukan untuk mengakses elemen array tipe Object yang tidak ada. (yaitu ketika, alih-alih referensi objek, elemen array berisi null)
Metode paling sederhana untuk menghindari pengecualian ini adalah dengan menggunakan pemeriksaan non-NULL. Namun, cepat atau lambat, ini akan menjadi praktik pengembangan Java dan Anda akan menemukan tanda centang non-NULL di mana-mana. Menariknya, memasukkan tanda centang non-NULL di mana pun tidak dianggap sebagai gaya pemrograman yang baik . Dan alasan utama menggunakan pemeriksaan non-NULL adalah pengembang ingin meneruskan objek null jika terjadi kegagalan atau kesalahan. Sebaliknya, ini adalah praktik pemrograman yang baik yang harus digunakan pemrogram untuk mengembalikan objek kosong, bukan nilai nol , sebagai logika dasar tentang bagaimana suatu program akan berperilaku jika terjadi kesalahan. Namun, menerapkan praktik pemrograman ini ternyata lebih sulit daripada yang terlihat.
Ada artikel bagus tentang ini di sumber kami.
4. Pengecualian ClassCast
Ini adalah pengecualian lain yang familiar bagi pemula, yang terjadi ketika mencoba melemparkan suatu objek ke kelas yang bukan merupakan subkelasnya. Sekali lagi, ini cukup mudah untuk dipahami, diidentifikasi, dan mudah diperbaiki. Salah satu cara untuk menghindari pengecualian ini ketika tipe objek tidak diketahui saat runtime adalah dengan menggunakan "InstanceOf" untuk memeriksa apakah objek tersebut merupakan turunan dari kelas tertentu.
5. ArrayIndexOutOfBoundsException
Pengecualian ini cukup jelas dan terjadi ketika JVM mencoba mengakses elemen array dengan indeks yang tidak ada, seperti negatif (-1) atau lebih besar atau sama dengan ukuran array. Sangat mudah untuk dipahami, didefinisikan, dan diperbaiki . Misalnya, saat membuat loop, for (i = 0; i <= cmd_stack.length; i++) System.out.println(cmd_stack[i]); pengecualian terjadi karena indeks dalam array dimulai dari 0, dan metode panjang mengembalikan jumlah elemen, dan angkanya 1 lebih besar dari nilai indeks terakhir. Penggunaan yang benar for (i = 0; i < cmd_stack.length; i++) System.out.println(cmd_stack[i]);
6. Pengecualian Argumen Ilegal
Pengecualian ini kurang umum dan cukup mudah untuk dipahami, diidentifikasi, dan diselesaikan. Hal ini terjadi ketika JVM mencoba memanggil metode yang tidak ada, atau metode dengan argumen yang tidak valid.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION