包含javalangnullpointerexception的词条

发布时间:2022-11-19

本文目录一览:

  1. 如何查找java.lang.NullPointerException的原因
  2. java.lang.nullpointerexception是什么意思
  3. java.lang.nullpointerexception怎么解决
  4. java.lang.nullpointerexception 怎么解决

如何查找java.lang.NullPointerException的原因

最近一段时间老遇到NullPointerException这个异常,于是上网找了一些关于这方面的资料,也解决了问题,在这特意做个总结: 一般报java.lang.NullPointerException的原因有以下几种:

  • 1.字符串变量未初始化;
  • 2.接口类型的对象没有用具体的类初始化,比如: List lt; 会报错
    List lt = new ArrayList(); 则不会报错了
  • 3.当一个对象的值为空时,你没有判断为空的情况。 之前获取类路径下的资源的时候就报了这个错(当然这个也是因为我不太熟悉用Class和ClassLoader来获取类路径下的资源。)
java.lang.NullPointerException
at java.io.Reader.init(Reader.java:61)
at java.io.InputStreamReader.init(InputStreamReader.java:55)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1049)
at org.apache.commons.io.IOUtils.toString(IOUtils.java:359)
at in.itcast.servlet.Eservlet.doGet(Eservlet.java:33)

我的代码最初是这样的:(test.txt和当前这个类在同一个目录下)

ClassLoader c = this.getClass().getClassLoader();
InputStream in = c.getResourceAsStream("test.txt");
String s = IOUtils.toString(in);
System.out.println(s);

出了异常之后,当时也找不到是哪里出现空指针了,在网上进行了一顿摸索之后,原来这样可以查找出某个对象是否为空,而且通常都要加上这个判断:

ClassLoader c = this.getClass().getClassLoader();
InputStream in = c.getResourceAsStream("test.txt");
if(in != null){
    String s = IOUtils.toString(in);
    System.out.println(s);
}else{
    System.out.println("null");
}

于是我找到了这个错误所在,原来是路径写错了。。。

  • Class类的getResourceAsStream(String path)
    1. 路径以“/”开头,相对classes路径;
    2. 路径不以“/”开头,相对当前class文件所有路径,例如在cn.itcast.servlet.MyServlet中执行,那么相对/classes/cn/itcast/servlet/路径;
  • ClassLoader类的getResourceAsStream(String path): 相对classes路径;

java.lang.nullpointerexception是什么意思

public class NullPointerException extends RuntimeException
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:

  • 调用 null 对象的实例方法。
  • 访问或修改 null 对象的字段。
  • 将 null 作为一个数组,获得其长度。
  • 将 null 作为一个数组,访问或修改其时间片。
  • 将 null 作为 Throwable 值抛出。 应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。

java.lang.nullpointerexception怎么解决

首先找到发生异常的那行,然后寻找逐步向上找源头。如果没有必要查找源头,可以直接绕过它。譬如:

  1. List<String> books = BooKDAO.findAll();
  2. int size = books.size(); 如果第2行发生空指针异常了,知道books肯定为null了,这时查找BookDAO的findAll方法,如果findAll()方法又调用了其他的方法,可以继续查下去。如果没有业务需要,可以直接写成:
List<String> books = BooKDAO.findAll();
int size = 0;
if(books != null){
    size = books.size();
}

或者

List<String> books = BooKDAO.findAll();
int size = 0;
try{
    size = books.size();
}catch(NullPointerException){
    size = 0; // 或者不写或者打印错误
}

扩展资料

最重要的类是Object(它是类层次结构的根)和Class(它的实例表示正在运行的应用程序中的类)。把基本类型的值当成一个对象来表示通常很有必要。包装器类BooleanCharacterIntegerLongFloatDouble就是用于这个目的。 类Math提供了常用的数学函数,比如正弦、余弦和平方根。类似地,类StringStringBuffer提供了常用的字符串操作。 类ClassLoaderProcessRuntimeSecurityManagerSystem提供了管理类的动态加载、外部进程创建、主机环境查询(比如时间)和安全策略实施等“系统操作”。 类Throwable包含了可能由throw语句抛出的对象。Throwable的子类表示错误和异常。 参考资料:java.lang - 百度百科

java.lang.nullpointerexception 怎么解决

这个是空指针异常,空指针的解决办法:重点关注报错发生的所在行,通过空指针异常产生的两条主要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放于设定的值之前。 在Java中一般报空指针异常的原因有以下几种:

  1. 字符串变量未初始化;
  2. 接口类型的对象没有用具体的类初始化,比如: List lt; 会报错
    List lt = new ArrayList(); 则不会报错了
  3. 当一个对象的值为空时,你没有判断为空的情况。你可以试着把下面的代码前加一行代码:
    if(rb != null && rb != "")
    
    改成:
    if(rb == null);
    if(rb != null && rb != "") 或者 if(("").equals(rb))
    

扩展资料:

空指针异常的报错:

root cause
java.lang.NullPointerException
Dao.BookInfor.ImFromClassification(BookInfor.java:31)
org.apache.jsp.front.home_jsp._jspService(home_jsp.java:120)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)