当前位置:首页 > 工作计划 > [java.lang.NullPointerException的可能原因及处理] java lang
 

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

发布时间:2019-07-02 05:32:50 影响了:

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

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

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

Eg:

源码:

1 public static BookInformation[] ImFromClassification(String a){ 2

Connection conn = null; 3

PreparedStatement ps = null; 4

ResultSet rs = null; 5

try{ 6

int x = 0; 7

conn = LinkMysql.getDBconnection(); 8

if(conn == null){System.out.println("conn");} 9

String sql="select * from bookinformation where classification=?";10

ps = conn.prepareStatement(sql);11

ps.setString(1, a);12

rs = ps.executeQuery();13

rs.beforeFirst();14

while(rs.next()){15

++x;16

}17

System.out.println(x);18

BookInformation[] a1 = new BookInformation[x];19

rs.first();20

for(int i = 0; i < x; i++){21

//a1[i] = new BookInformation();22

a1[i].setName(rs.getString("name"));23

a1[i].setAuthor(rs.getString("author"));24

a1[i].setClassification(rs.getString("classification"));25

a1[i].setAmount(rs.getInt("amount"));26

a1[i].setPrice(rs.getInt("price"));27

a1[i].setSalvesVolum(rs.getInt("sales_volum"));28

rs.next();29

}30

return a1;31

32

} catch (SQLException e) {33

System.out.println("xxx");34

return null;35

}36

finally{LinkMysql.closeDB(conn, ps, rs);}37

38   }

报错:

1 root cause23 java.lang.NullPointerException4 Dao.BookInfor.ImFromClassification(BookInfor.java:31)5 org.apache.jsp.front.home_jsp._jspService(home_jsp.java:120)6 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)7 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)8 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)9 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)10 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)11 javax.servlet.http.HttpServlet.service(HttpServlet.java:731)12 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

分析:

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

更改:

1 public static BookInformation[] ImFromClassification(String a){ 

2         Connection conn = null; 

3         PreparedStatement ps = null; 

4         ResultSet rs = null; 

5         try{ 

6                 int x = 0; 

7                 conn = LinkMysql.getDBconnection(); 

8                 if(conn == null){System.out.println("conn");} 

9                 String sql="select * from bookinformation where classification=?";

10                 ps = conn.prepareStatement(sql);

11                 ps.setString(1, a);

12                 rs = ps.executeQuery();

13                 rs.beforeFirst();

14                 while(rs.next()){

15                     ++x;16                 }

17                 System.out.println(x);

18                 BookInformation[] a1 = new BookInformation[x];

19                 rs.first();

20                 for(int i = 0; i < x; i++){

21                     a1[i] = new BookInformation();

22                     a1[i].setName(rs.getString("name"));

23                     a1[i].setAuthor(rs.getString("author"));

24                     a1[i].setClassification(rs.getString("classification"));

25                     a1[i].setAmount(rs.getInt("amount"));

26                     a1[i].setPrice(rs.getInt("price"));

27                     a1[i].setSalvesVolum(rs.getInt("sales_volum"));

28                     rs.next();

29                 }

30                 return a1;

31                 

32         } catch (SQLException e) {

33             System.out.println("xxx");

34             return null;35         }

36         finally{LinkMysql.closeDB(conn, ps, rs);}

37         

38     }

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3