JAVAJava

[Java]如何在工作中避免空指针异常(NullPointerE

2020-10-26  本文已影响0人  AbstractCulture

什么是空指针异常?

空指针异常指的是当前的对象指向了一段null的内存区域,而开发者用null进行了其他操作,引发的JVM堆栈异常。
编译时程序无法推断出这个对象是否会为null,而在程序运行的时候,它执行了null所不具备的能力,这个时候JVM会向你抛出NullPointException,告诉你,这个地方的引用是空的,无法继续往下执行了。

经典案例

User

package exception;

import lombok.Data;

import java.util.Collections;
import java.util.List;

@Data
public class User {
    private String userName;
    private String password;
    private Integer age;

    /**
     * 返回空集合,用于演示NPE
     * @return
     */
    public static List<User> getNullInstances(){
        return null;
    }
}

User user = getDataById(100);
// 如果根据id:100无法查询到具体的User实例,那么此时的user就是null,那么null.getxxx()就会触发NPE了
String userName = user.getUserName();
        List<User> userList = User.getNullInstances();
        System.out.println(userList.size());
        BufferedReader bufferedReader = null;
        try {
            File file = new File("C:\\Users\\95152\\Desktop\\sql.txt");
            FileReader fileReader = new FileReader(file);
            bufferedReader = new BufferedReader(fileReader);
            String readLine = bufferedReader.readLine();
            System.out.println(readLine);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                // 这里的bufferedReader可能为空,直接调用close可能会报错
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

高发区域

如何保持代码的鲁棒性,避免NPE?

上一篇下一篇

猜你喜欢

热点阅读