Rumah  >  Artikel  >  Java  >  Dalam senario apakah NullPointerException berlaku di Jawa?

Dalam senario apakah NullPointerException berlaku di Jawa?

WBOY
WBOYasal
2023-06-25 08:55:551566semak imbas

Java ialah bahasa pengaturcaraan yang digunakan secara meluas, dan NullPointerException adalah salah satu pengecualiannya. Ia menunjukkan bahawa terdapat rujukan penunjuk nol dalam kod. Apabila terdapat panggilan kaedah pada objek nol atau akses kepada sifat objek nol dalam kod, pengecualian NullPointerException dilemparkan. Dalam artikel ini, kami akan meneroka senario di mana NullPointerException berlaku.

1. Buat panggilan kaedah apabila objek adalah batal

Apabila objek adalah batal, jika kaedah dipanggil padanya, NullPointerException akan dilemparkan. Sebagai contoh, coretan kod berikut:

String str = null;
System.out.println(str.length());

Memandangkan str adalah null, apabila pernyataan str.length() dilaksanakan, NullPointerException akan dilemparkan. Untuk mengelakkan situasi ini, kita perlu menilai objek sebelum memanggil kaedah, seperti yang ditunjukkan di bawah:

String str = null;
if(str != null){
    System.out.println(str.length());
}

2 Lakukan operasi tatasusunan apabila tatasusunan adalah batal

Apabila tatasusunan adalah batal, jika operasi tatasusunan dilakukan pada. ia ( Seperti mengakses elemen tatasusunan, menilai panjang tatasusunan, dll.), NullPointerException juga akan dilemparkan. Contohnya, coretan kod berikut:

int[] arr = null;
System.out.println(arr.length);

Memandangkan arr adalah batal, NullPointerException akan dilemparkan apabila pernyataan arr.length dilaksanakan. Untuk mengelakkan situasi ini, kita perlu menilai tatasusunan sebelum mengakses elemen tatasusunan, seperti yang ditunjukkan di bawah:

int[] arr = null;
if(arr != null){
    System.out.println(arr.length);
}

3 Pengecualian penunjuk nol berlaku dalam cuba-tangkap

Dalam blok cuba-tangkap, jika penunjuk nol. berlaku Pengecualian, jika objek penuding nol digunakan secara langsung tanpa memproses dalam blok tangkapan, pengecualian NullPointerException juga akan dilemparkan. Sebagai contoh, coretan kod berikut:

try {
    String str = null;
    System.out.println(str.length());
} catch (Exception e) {
    String errorMsg = e.getMessage();
    System.out.println(errorMsg.length());
}

Memandangkan pengecualian penuding nol berlaku dalam blok cuba, apabila pernyataan System.out.println(errorMsg.length()) dalam blok tangkapan dilaksanakan, pengecualian NullPointerException akan dilemparkan . Kita boleh menilai mesej ralat dalam blok tangkapan, seperti yang ditunjukkan di bawah:

try {
    String str = null;
    System.out.println(str.length());
} catch (Exception e) {
    String errorMsg = e.getMessage();
    if(errorMsg != null){
        System.out.println(errorMsg.length());
    }
}

4 Menggunakan objek yang tidak dimulakan

Jika objek yang tidak dimulakan dikendalikan, NullPointerException juga akan dilemparkan. Sebagai contoh, coretan kod berikut:

String str;
System.out.println(str.length());

Memandangkan str belum dimulakan, NullPointerException juga akan dilemparkan apabila pernyataan str.length() dilaksanakan. Untuk mengelakkan situasi ini, kita perlu memulakan objek sebelum menggunakannya, seperti yang ditunjukkan di bawah:

String str = "";
System.out.println(str.length());

Ringkasan:

Untuk pengecualian NullPointerException, kita perlu memberi perhatian kepada masalah dalam senario di atas dan mengendalikannya dengan sewajarnya untuk mengelakkan Rujukan penuding nol muncul dalam kod. Pada masa yang sama, kita juga boleh menggunakan kelas alat (seperti kelas StringUtils dalam perpustakaan apache-commons-lang3) untuk mengelakkan berlakunya pengecualian penuding nol.

Atas ialah kandungan terperinci Dalam senario apakah NullPointerException berlaku di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn