Null Pointer Exception trong Java: Triển khai và Ví dụ



Bài viết này sẽ cung cấp cho bạn kiến ​​thức chi tiết và toàn diện về cách Null Pointer Exception hoạt động trong Java với vô số Ví dụ.

Ngoại lệ là cần thiết để chạy mã trơn tru và cho người lập trình biết lỗi cần giải quyết. Trong bài viết này, chúng tôi sẽ tập trung vào Null Pointer Exception trong Java theo thứ tự sau:

Null Pointer Exception trong Java là gì?





Ngoại lệ con trỏ null trong Java là một ngoại lệ thời gian chạy. Trong thế giới của Java, một giá trị null đặc biệt được gán cho một tham chiếu đối tượng. Ngoại lệ con trỏ Null được giới thiệu khi một chương trình cố gắng sử dụng một tham chiếu đối tượng có giá trị null. Có thể là:

  • Để gọi một phương thức nhất định từ một đối tượng null.
  • Để truy cập hoặc sửa đổi trường của đối tượng rỗng.
  • Bằng cách xem xét độ dài của null, như thể nó là một mảng.
  • Trong khi truy cập hoặc sửa đổi các vị trí của một đối tượng null.
  • Ném null giống như một giá trị có thể ném.
  • Đang cố gắng đồng bộ hóa trên một đối tượng null.

Tại sao chúng ta cần giá trị null?



Null là một giá trị duy nhất được sử dụng trong Java. Null được sử dụng để chỉ ra rằng không có giá trị nào được gán cho một biến tham chiếu. Ứng dụng chính của null nằm trong việc triển khai các cấu trúc dữ liệu như danh sách liên kết và cây. Một số ứng dụng khác bao gồm các mẫu đối tượng rỗng và các mẫu singleton. Một mẫu singleton chỉ định rằng chỉ một thể hiện của một lớp có thể được khởi tạo và nhằm mục đích cung cấp một điểm truy cập toàn cục cho đối tượng.

Cách tốt nhất và đơn giản để tạo ít nhất một thể hiện của một lớp là khai báo tất cả các hàm tạo là private. Sau đó, họ tạo một phương thức công khai trả về thể hiện duy nhất của lớp.

// Để sử dụng hàm randomUUID. import java.util.UUID import java.io. * class Singleton {// Ở đây chúng ta Khởi tạo các giá trị của single và ID thành null. private static Singleton single = null private String ID = null private Singleton () {/ * Đặt nó ở chế độ riêng tư để ngăn việc tạo các phiên bản mới của lớp Singleton. * / // Tạo một ID ngẫu nhiên ID = UUID.randomUUID (). ToString ()} public static Singleton getInstance () {if (single == null) single = new Singleton () return single} public String getID () {return this.ID}} // Mã trình điều khiển public class TestSingleton {public static void main (String [] args) {Singleton s = Singleton.getInstance () System.out.println (s.getID ())}} //

Đầu ra:



null-pointer

Ví dụ trên là một thể hiện tĩnh của lớp singleton. Cá thể được khởi tạo nhiều nhất một lần bên trong phương thức Singleton get Instance.

Làm thế nào để tránh Ngoại lệ Con trỏ Null trong Java?

__init__ python

Để tránh Ngoại lệ Con trỏ Null trong Java, chúng ta phải đảm bảo rằng tất cả các đối tượng được khởi tạo đúng cách trước khi bạn sử dụng chúng. Khi một biến tham chiếu được khai báo, chúng ta phải xác minh rằng một đối tượng không phải là null và trước khi chúng ta yêu cầu các phương thức hoặc trường từ các đối tượng. Sau đây là một số vấn đề với các giải pháp tương ứng của nó để khắc phục vấn đề đó.

// chương trình để chứng minh việc gọi một phương thức // trên null gây ra NullPointerException import java.io. * class GFG {public static void main (String [] args) {// Khởi tạo biến String với giá trị null String ptr = null // Kiểm tra xem ptr.equals null hay hoạt động tốt. try {// Dòng mã này ném NullPointerException // vì ptr là null if (ptr.equals ('gfg')) System.out.print ('Giống nhau') else System.out.print ('Không giống nhau')} catch (NullPointerException e) {System.out.print ('NullPointerException Caught')}}}

Đầu ra:

Kiểm tra các đối số của một phương pháp

Luôn nhớ rằng trước khi thực thi phần thân của một phương thức mới, chúng ta nên đảm bảo các đối số của nó cho các giá trị null và tiếp tục thực thi phương thức. Nếu và chỉ khi các đối số được kiểm tra chính xác. Ngược lại, nó sẽ ném ra một “IllegalArgumentException” và gọi ra phương thức gọi rằng có gì đó không ổn với các đối số được truyền vào.

// chương trình kiểm tra xem các tham số có rỗng hay không trước khi // sử dụng chúng. import java.io. * class GFG {public static void main (String [] args) {// Chuỗi s đặt một chuỗi rỗng và gọi getLength () String s = '' try {System.out.println (getLength (s) )} catch (IllegalArgumentException e) {System.out.println ('IllegalArgumentException catch')} // Chuỗi được đặt thành một giá trị và gọi getLength () s = 'GeeksforGeeks' try {System.out.println (getLength (s) )} catch (IllegalArgumentException e) {System.out.println ('IllegalArgumentException catch')} // Đặt s là null và gọi getLength () s = null try {System.out.println (getLength (s))} catch ( IllegalArgumentException e) {System.out.println ('IllegalArgumentException catch')}} // Hàm trả về độ dài của chuỗi s. Nó ném // IllegalArgumentException nếu s là null. public static int getLength (String s) {if (s == null) ném mới IllegalArgumentException ('Đối số không được null') return s.length ()}}

Đầu ra:

Sử dụng toán tử bậc ba

những lý do để tạo một thể hiện của lớp tệp là gì?

Một toán tử bậc ba được sử dụng để tránh NullPointerException. Biểu thức Boolean được kiểm tra và nếu biểu thức là true thì giá trị1 được trả về, ngược lại, giá trị2 được trả về. Có thể sử dụng toán tử bậc ba để xử lý con trỏ null: Hình bên phải là đầu ra tương ứng.

// Một chương trình Java để chứng minh rằng chúng ta có thể sử dụng // toán tử bậc ba để tránh NullPointerException. import java.io. * class GFG {public static void main (String [] args) {// Khởi tạo biến String với giá trị null String str = null String message = (str == null)? '': str.substring (0,5) System.out.println (message) str = 'Edureka_Java_Blog' message = (str == null)? '': str.substring (0,5) System.out.println (message)}}

Đầu ra:

Edurek

Với điều này, chúng ta đến phần cuối của Ngoại lệ con trỏ Null trong Java. Tôi hy vọng bạn có một ý tưởng về Null Pointer Exception.

Kiểm tra của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa đào tạo và cấp chứng chỉ về Java J2EE và SOA của Edureka được thiết kế cho sinh viên và các chuyên gia muốn trở thành Nhà phát triển Java. Khóa học được thiết kế để cung cấp cho bạn khởi đầu về lập trình Java và đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến vấn đề này trong phần nhận xét của blog “Null Pointer Exception trong Java” và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.