Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Temui punca utama NullPointerException

Temui punca utama NullPointerException

王林
王林asal
2023-12-28 09:41:35554semak imbas

Temui punca utama NullPointerException

Untuk meneroka punca utama pengecualian penunjuk null, contoh kod tertentu diperlukan

INDRODUCE: untuk terhempas. Untuk menyelesaikan masalah ini dengan cekap, kita perlu meneroka secara mendalam punca pengecualian penuding nol. Dalam artikel ini, saya akan menggunakan contoh kod khusus untuk membincangkan punca pengecualian penuding nol dan cara mengelakkan pengecualian tersebut.

1. Definisi dan ciri pengecualian penuding nol

Pengecualian penunjuk nol bermakna rujukan objek dengan nilai nol digunakan dalam atur cara dan operasi dilakukan pada objek, menghasilkan pengecualian.

Ciri-ciri pengecualian penuding nol biasa termasuk situasi berikut:

    Kaedah contoh panggilan atau sifat objek nol
  1. Akses tatasusunan kepada objek nol
  2. Operasi lelaran pada objek null
  3. yang lain; ;
  4. objek null melakukan operasi tugasan dengan objek lain. . ialah nilai nol. Apabila beroperasi pada objek ini, pengecualian penuding nol berlaku.
  5. Rujukan objek diperuntukkan kepada null: Apabila rujukan objek ditetapkan kepada null pada masa tertentu, jika rujukan objek digunakan dalam kod berikutnya untuk operasi, pengecualian penuding nol akan berlaku.
Nilai pulangan kaedah adalah batal: Selepas memanggil kaedah, nilai pulangan kaedah ditetapkan kepada nol, dan kemudian nilai pulangan terus dikendalikan, pengecualian penuding nol akan berlaku.


3. Contoh dan analisis kod khusus
    Yang berikut menggunakan contoh kod untuk menggambarkan sebab khusus pengecualian penunjuk nol dan cara mengelakkan pengecualian tersebut.
  1. Contoh Kod 1:
  2. String str = null;
    int length = str.length();  // 空指针异常发生的地方
  3. Dalam kod di atas, kami menetapkan str rujukan rentetan yang tidak dimulakan kepada null, dan kemudian cuba panggil kaedah length() rentetan. Oleh kerana str adalah nol, operasi pada objek ini pasti akan menyebabkan pengecualian penuding nol.
  4. Contoh Kod 2:
String[] arr = new String[5];
for (int i=0; i<arr.length; i++) {
    arr[i].toUpperCase();  // 空指针异常发生的地方
}

Dalam kod di atas, kami mencipta arr tatasusunan rentetan dengan panjang 5, dan kemudian cuba untuk beroperasi pada setiap elemen dalam tatasusunan. Memandangkan elemen dalam tatasusunan adalah semua nilai nol, pengecualian penuding nol berlaku apabila kita memanggil kaedah toUpperCase().

Kod Contoh 3:

public String fetchName() {
    return null;
}

String name = fetchName();
int length = name.length();  // 空指针异常发生的地方

Dalam kod di atas, kami menentukan kaedah fetchName() dengan nilai pulangan nol. Kemudian tetapkan nilai pulangan kaedah untuk menamakan dan cuba panggil kaedah length() pada nama. Kerana nama adalah nol, pengecualian penuding nol berlaku apabila beroperasi pada objek.

4. Bagaimana untuk mengelakkan berlakunya Pengecualian Penunjuk Null

Untuk mengelakkan berlakunya Pengecualian Penunjuk Null, kita boleh menggunakan penyelesaian berikut:

Sentiasa pastikan rujukan kepada objek dimulakan dengan betul, dan nilai nol tidak dibenarkan;

Apabila berpasangan Sebelum beroperasi pada objek, gunakan pertimbangan bersyarat untuk memastikan rujukan objek tidak kosong

Kendalikan kaedah yang mungkin mengembalikan nol untuk menghalang operasi pada objek nol.


Ringkasan:
    Pengecualian penuding nol ialah ralat program yang biasa tetapi menyusahkan. Dengan pemahaman yang mendalam tentang punca pengecualian penunjuk nol, kita boleh mencegah dan mengelakkan berlakunya pengecualian tersebut dengan lebih baik. Semasa menulis kod, sentiasa pastikan rujukan objek dimulakan dengan betul dan buat pertimbangan nilai nol sebelum beroperasi pada objek Ini adalah langkah yang berkesan untuk mengelakkan pengecualian penunjuk nol. Pada masa yang sama, kaedah pengendalian dengan betul yang mungkin mengembalikan null juga merupakan cara penting untuk mengelakkan pengecualian penunjuk nol. Hanya dengan mencapai aspek ini kami boleh menjalankan program dengan lebih cekap dan stabil, serta meningkatkan kualiti perisian dan pengalaman pengguna.

Atas ialah kandungan terperinci Temui punca utama NullPointerException. 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