首页 > 代码库 > java.lang.NullPointerException的可能原因及处理
java.lang.NullPointerException的可能原因及处理
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 }
报错:
root causejava.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])之后,没有对每个数组元素初始化。
更改:
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 }
java.lang.NullPointerException的可能原因及处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。