出现空指针异常,常常是因为我们调用的对象是空的而抛出的异常。
第一种:
out.println(request.getParameter("username"));
如果request里面并没有username的值,这时无法对空对象进行操作的,就会抛出异常。
第二种:
String userName = request.getParameter("username"); If (userName.equals("root")) {....}
如果没有username值,或者username为null时,是不能将一个为null的对象与另外一个对象进行比较的。
If ("root".equals(user Name)) {....}
如果返回值与常量进行比较时,就可以避免调用null对象的equals方法。不会抛出异常。
第三种:
假设有一个student类,有属性name。
Student a; String b = a.name;
这个时候就会报错,因为a为空的,解决办法就是让a指向一个对象,Student a = new Student();
对于日志中的报错信息,在java中抛出异常是从内往外,因此只需要重点关注第一行报错信息,下面的报错都是由于一层层传递调用该方法导致。
Java空指针异常的若干解决方案:
Java中任何对象都可以为空,我们可以使用若干种方法来避免产生这类异常。比如我们传统的空值检测,编程规范,以及使用java中各种工具类。
(1)最常用的一种就是直接对 对象进行判断,比如if(Object == null)来对所有用到的对象进行判断,这个对象也就是我们常用的函数参数,返回值,以及类实例的成员变量等。当我们检测到null值时,我们可以异常的类型抛出更具有针对性的异常类型,再附加上我们自己加的消息内容。我们也可以直接使用一些库函数来简化代码:
Object checkData = Object.requireNoNull(resultMessage,"The resultMessage must not be null")
如果我们使用过Lombok工具的话,里面有一个@NotNull注解,就是指被注释的元素不能为空,就会自定检测。
(2)第二种方法就是遵守编程规范,可以减少一定的空指针异常的发生。
Strings.isNullOrEmpty(str); CollectionUtils.isEmpty(collection); StringUtils.isEmpty(str); if(object != null) { object.toString();) } // 使用toString()这种方法的话,如果object为空的话,就会抛出异常 String.valueOf(object) //将Object转换为字符串,不管是否为null,不会抛出异常
如果返回是集合类型。而且是空的,不要返回null值,而是要返回一个空的集合,如果返回类型是对象的话,我们可以抛出异常。
public class Example { private static List<Integer> numbers = null; public static List<Integer> getList() { if (numbers == null) return Collections.emptyList(); else return numbers; } }
检查一个方法的参数,在执行方法之前,确保检查了参数是否null,当参数被适当检查后,方法会继续执行。否则抛出叫做llegalArgumentException的异常,并通知调用的方法传入的参数有误。
使用三元运算符,可以避免NullPointerException,形式如下:
boolean expression ? value1:value2;
第一种使用instanceof 操作符
即使对象的引用为null,instanceOf操作符可使用。当引用为null时,instanceof操作符返回false,而且不会抛出NullPointerException,比如:
String str = null; if(str instanceof null) { log.error(.......) }
确保所有对象在使用之前被初始化。
摘要: 今天给各位分享和田宠物医院污水处理方案的知识,其中也会对宠物医院污水处理方式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、医院污水处理操.
文件移动(Move)操作和文件的复制(Copy)是C#程式开发经常遇到的方法,根据传入的源文件地址和目标文件地址参数,实现对文件的操作。实现代码如下: Move操作代码 public static
摘要: 本篇文章给大家谈谈被猫抓了一下红色划痕鼓起来了要打疫苗吗,以及被猫抓了红色划痕凸起的对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录一览:1、被猫用爪子抓破了要去..
这一次的节点更新覆盖了日本、香港、欧洲、新加坡、美国、加拿大、韩国等地区,最高速度可达20.2 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。
这一次的节点更新覆盖了加拿大、美国、韩国、日本、新加坡、欧洲、香港等地区,最高速度可达20.4 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。
这一次的节点更新覆盖了香港、日本、加拿大、韩国、新加坡、美国、欧洲等地区,最高速度可达21 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。
这一次的节点更新覆盖了美国、加拿大、香港、欧洲、新加坡、韩国、日本等地区,最高速度可达19.5 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。
摘要: 今天给各位分享家养2个月小猫咬出血要紧吗的知识,其中也会对2个月的猫咬出血要紧吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、被2个月小.
摘要: 大家好,今天小编关注到一个比较有意思的话题,就是关于动物疫苗市场的现状和趋势的问题,于是小编就整理了2个相关介绍动物疫苗市场的现状和趋势的解答,让我们一起看看吧。以后的宠物医院前景
摘要: 大家好,今天小编关注到一个比较有意思的话题,就是关于动物预防针多少钱的问题,于是小编就整理了3个相关介绍动物预防针多少钱的解答,让我们一起看看吧。兽医站打疫苗要不要钱?做狂犬疫苗抗