java.lang.NullPointerException的可能原因及处理

java.lang.NullPointerException具体意思是空指针异常,最常见的问题就是没有初始化。

  1. 字符串等数据类型没有初始化
  2. 类实例(对象)有用具体的类初始化
  3. 没有判断是否为空

Eg:

源码:

 public static BookInformation[] ImFromClassification(String a){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
int x = 0;
conn = LinkMysql.getDBconnection();
if(conn == null){System.out.println("conn");}
String sql="select * from bookinformation where classification=?";
ps = conn.prepareStatement(sql);
ps.setString(1, a);
rs = ps.executeQuery();
rs.beforeFirst();
while(rs.next()){
++x;
}
System.out.println(x);
BookInformation[] a1 = new BookInformation[x];
rs.first();
for(int i = 0; i < x; i++){
//a1[i] = new BookInformation();
a1[i].setName(rs.getString("name"));
a1[i].setAuthor(rs.getString("author"));
a1[i].setClassification(rs.getString("classification"));
a1[i].setAmount(rs.getInt("amount"));
a1[i].setPrice(rs.getInt("price"));
a1[i].setSalvesVolum(rs.getInt("sales_volum"));
rs.next();
}
return a1; } catch (SQLException e) {
System.out.println("xxx");
return null;
}
finally{LinkMysql.closeDB(conn, ps, rs);} }

报错:

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)

分析:

数组定义(BookInformation[] a1 = new BookInformation[5])之后,没有对每个数组元素初始化。

更改:

 public static BookInformation[] ImFromClassification(String a){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
int x = 0;
conn = LinkMysql.getDBconnection();
if(conn == null){System.out.println("conn");}
String sql="select * from bookinformation where classification=?";
ps = conn.prepareStatement(sql);
ps.setString(1, a);
rs = ps.executeQuery();
rs.beforeFirst();
while(rs.next()){
++x;
}
System.out.println(x);
BookInformation[] a1 = new BookInformation[x];
rs.first();
for(int i = 0; i < x; i++){
a1[i] = new BookInformation();
a1[i].setName(rs.getString("name"));
a1[i].setAuthor(rs.getString("author"));
a1[i].setClassification(rs.getString("classification"));
a1[i].setAmount(rs.getInt("amount"));
a1[i].setPrice(rs.getInt("price"));
a1[i].setSalvesVolum(rs.getInt("sales_volum"));
rs.next();
}
return a1; } catch (SQLException e) {
System.out.println("xxx");
return null;
}
finally{LinkMysql.closeDB(conn, ps, rs);} }

java.lang.NullPointerException的可能原因及处理的更多相关文章

  1. Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法

    使用 Struts2 编写页面,遇到一个要长时间运行的接口,因此增加了一个execAndWait ,结果在 Action 中调用 getContext()的时候报告异常 ActionContext c ...

  2. Type Unknown error: java.lang.NullPointerException

    Android 项目开发的时候 出现: Description Resource Path Location Type Unknown error: java.lang.NullPointerExce ...

  3. java.lang.NullPointerException org.apache.jsp.WEB_002dINF.pages.imagecheck.test_jsp._jspInit(test_jsp.java:22)的原因

    HTTP Status 500 - type Exception report message description The server encountered an internal error ...

  4. 一般报java.lang.NullPointerException的原因有以下几种

    一般报java.lang.NullPointerException的原因有以下几种: ·字符串变量未初始化: ·接口类型的对象没有用具体的类初始化,比如: List lt; 会报错 List lt = ...

  5. java.lang.NullPointerException 错误原因

    [http-nio-8081-exec-1] ERROR o.a.c.c.C.[.[localhost].[/].[dispatcherServlet] - Servlet.service() for ...

  6. PropertyUtils.copyProperties(); java.lang.NullPointerException可能产生的原因

    PropertyUtils.copyProperties(Object dest, Object orig); 出现空指针异常可能产生的原因(不一定准确):java.lang.NullPointerE ...

  7. 【Java】java.lang.NullPointerException的两个原因

    自己写程序时出现过 java.lang.NullPointerException错误的一些原因 (1)自己建立了一个数组,但每个数组元素没单独初始化(单独new一个新对象). (2)在进行if (ar ...

  8. [hadoop] map函数中使用FileSystem对象出现java.lang.NullPointerException的原因及解决办法

    问题描述: 在hadoop中处理多个文件,其中每个文件一个map. 我使用的方法为生成一个文件,文件中包含所有要压缩的文件在HDFS上的完整路径.每个map 任务获得一个路径名作为输入. 在eclip ...

  9. 报错:空指针java.lang.NullPointerException 原因 Action层 private UserService userservice 上未加@Autowire注解

    java.lang.NullPointerException at com.itheima.test.Test2.fun1(Test2.java:18) at sun.reflect.NativeMe ...

随机推荐

  1. 一个简单oop的changeTab

    好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...

  2. mybatis一对多关联

    这里的一对多指的是:当我们查询一个对象的时候,同时将其有关联的多方对象都查询出来. 下面以国家(Country)和部长(Minsiter)做案例 一个国家有多个部长 1.定义实体 定义实体的时候需要注 ...

  3. 【编码】_C#中编码名称(Name)与页面标识(CodePage)的关系_编码gb2312的获取

    在写C#代码时,发现VS提供没有直接提供gb2312的中文编码, 所以,需要找到对应编码名称的codepage来调用想要的编码方式. 下面是微软编程提供的所有编码信息,包括编码名称,编码代码页标识符, ...

  4. [CodeIgniter] 在自定义类库中使用config配置项

    通常情况下,Controller 中的方法可以通过 $this->config->item('item_name') 的方式来加载配置文件中的值 但是如果不继承 CI_Controller ...

  5. java面向对象---对象初始化

    在本地变量中,如果定义了一个变量后没有赋值就使用,那么eclipse就会报错:但是在成员变量中,java是会强制给一个没有初始化的变量一个默认的初始值0, 如果是一个boolean类型的变量,那么默认 ...

  6. TypeScript 素描-基础类型

    博文读自 TypeScript 官方文档而来,不具有学习性,仅是本人学习时记录以供日后翻阅 ,有学习TypeScript的朋友还请去看更为详细的官方文档 TypeScript官网文档中的基础类型, T ...

  7. UVA232

    这只是大概的雏形. 步骤就是:1输入网格,2给网格里的起始格编序号,3输出所有字母,前面要加序号 #include<stdio.h> #include<ctype.h> #in ...

  8. vue 组建实现数据的双向绑定

    <!DOCTYPE html><html><head> <style>body {  font-family: Helvetica Neue, Aria ...

  9. Openstack学习目录

    1.2016.12.27    ceph简介   crush算法    OSD(boject storage device)   Mds(cephfs) 使用cephfs时需要安装metadata s ...

  10. 差分进化算法 DE-Differential Evolution

    差分进化算法 (Differential Evolution)   Differential Evolution(DE)是由Storn等人于1995年提出的,和其它演化算法一样,DE是一种模拟生物进化 ...