Sủa lỗi java.lang.nullpointerexception null khi ký tờ khai
Chào bạn, là một người đang học Java / lập trình viên Java chắc hẳn bạn cũng đều phải xử lý những lỗi, ngoại lệ. Show Và một trong những lỗi, ngoại lệ khá quen thuộc và rất hay mắc phải đó là NullPointerException. Trong bài viết này chúng ta cùng nhau tìm hiểu về NullPointerException trong Java và cách khắc phục nó như thế nào nhé. Các sửa lỗi NullPointerException trong Java Nội dung của bài viết này gồm:
1. Lỗi NullPointerException xảy ra khi nàoNullPointerException (viết tắt NPE) là một RuntimeException. Trong Java, một giá trị null đặc biệt có thể được gán cho một tham chiếu của đối tượng. Lỗi NullPointerException được ném ra khi chương trình cố gắng tham chiếu tới một đối tượng nhưng nó không có vị trí nào trên bộ nhớ, tức là có giá trị null. Việc gọi một method tham chiếu null hoặc cố gắng truy cập một trường tham chiếu null là một trong những nguyên nhân phổ biến gây ra lỗi NullPointerException trong Java. Ngoài ra, một số trường hợp có thể gây ra lỗi NullPointerException như sau:
Sau đây mình sẽ code demo cho các bạn một trường hợp sinh ra lỗi NPE nhé. Trong đoạn code này mình sẽ cố tình truy cập vào một phần tử không tồn tại trong mảng và để xem chương trình sẽ in ra cái gì. // Cố gắng tạo ra lỗi NullPointerException // Bằng cách truy cập phần từ không tồn tại trong một mảng public class Demo { public static void main (String[] args) { int[] arr \= null; System.out.print(arr[6]); } } Và đây là kết quả: Ví dụ về trường hợp xảy ra lỗi NullPointerException trong Java Ở đây mình đã cố tình truy cập vào một phần tử của mảng 2. Cách sửa lỗi NullPointerException trong JavaVới những gì đã trình bày ở phần 1, thì làm sao chúng ta có thể khắc phục, tránh được lỗi NullPointerException? Mình sẽ chia sẻ một vài cách dưới đây. Cách1: Sử dụng IDE để tránh lỗi NullPointerExceptionỞ trong các IDE ví dụ như Eclipse, nó sẽ đưa ra cảnh báo cho bạn về lỗi NPE. Ví dụ như trong eclipse khi mình code đoạn code ở ví dụ trong phần 1, nó sẽ đưa ra warning, Eclipse IDE hỗ trợ phát hiện lỗi NullPointerException trong Java Nhờ sự trợ giúp của IDE, ta có thể chủ động tránh được NPE. Tuy nhiên không phải trong trường hợp nào IDE cũng phát hiện ra và cảnh báo warning cho bạn đâu nhé. Vì vậy ta không nên trông chờ quá nhiều vào IDE. Cách2: Return một empty collection thay vì giá trị null để tránh lỗi NullPointerExceptionTrong Java, mặc định một biến Object được định nghĩa sẽ có giá trị null. Nếu mọi phương thức đều Chính vì thế, các Collection như List, Set, Map, … được sử dụng rất nhiều trong ứng dụng. Đối với Collection, chúng ta có thể sử dụng từ khóa
Cách3: Return một giá trị Unkown/Default thay về một giá trị nullVí dụ đoạn code return về một giá trị public Data getData(DataType data){ if(data == 1) { return getData(); } return null; } Thay vì return về một giá trị null như bên trên thì bạn nên return về `null`3 như sau: class NullData extends Data { } public Data getUser(DataType data){ if(data == 1) { return getData(); } return NullData(); } Cách4: Luôn kiểm tra null trước khi sử dụngĐôi khi có một số trường hợp chúng ta cần return về null hay trong các hệ thống code cũ (legacy code) thì điều này là nên làm. Cách5: Kiếm tra String null sau lệnh trim()Để thực hiện cách xử lý NullPointerException này thì hãy xem ví dụ sau: public static boolean isNullOrEmptyAfterTrim(String str) { return (str1 == null || str.trim().length() == 0); } Cách6: Khởi tạo giá trị trước khi sử dụngVí dụ khi bạn khai báo một Arraylist hay một mảng thì chúng ta nên khởi tạo giá trị cho nó trước khi sử dụng. // Khởi tạo giá trị đối với ArrayList private List // Khởi tạo giá trị đối với mảng int[] arr \= new int[length]; Trong đó `null`4 là số phần tử của mảng Cách7: Sử dụng try-catch để bắt lỗi NullPointerException// Tránh lỗi NullPointerException bằng try catch try { NPE1(); } catch (NullPointerException ex) { System.out.println("Exception in NPE1()" + ex); } Cách8: Sử dụng Collections.emptyList() để kiểm tra null của một collections.Để tìm hiểu cách sử dụng Collections.emptyList() trong xử lý lỗi NullPointerException thì bạn có thể xem chi tiết tại đây. Cách9: Kiểm tra null-safeĐể kiểm tra null-safe bạn hãy viết code một cách khôn ngoan. Ví dụ mình có đoạn code kiểm tra độ dài của chuỗi String. Nhưng bạn không nên code như thế này: if (str.equals("helloworld")) {} Bởi vì khi biến Mà thay vào đó chúng ta nên code như sau: if ("helloworld".equals(str)) {} Bạn đã biết các xử lý lỗi NullPointerException trong Java chưa?Như vậy bạn đã biết lỗi NullPointerException trong java xảy ra khi nào. Và mình cũng đã chia sẻ cho bạn một số cách để chúng ta tránh được lỗi này. Hi vọng bài viết này giúp ích được cho bạn trong quá trình chinh phục ngôn ngữ Java này. \> Nếu bạn thực sự muốn phát triển xa hơn với ngôn ngữ Java thì nên tham gia ngay KHÓA HỌC JAVA (Fullstack). Đào tạo tập trung trong 6 tháng với giảng viên doanh nghiệp. Hẹn gặp lại mọi người trong các bài viết sau nhé. --- HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay! Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội SĐT: 02435574074 - 0383.180086 Email: [email protected] Fanpage: https://facebook.com/NIIT.ICT/ niiticthanoiniithanoiniiticthanoihoclaptrinhkhoahoclaptrinhhoclaptrinhjavahoclaptrinhphpjavaphppython |