包含javalangnullpointerexception的詞條

本文目錄一覽:

如何查找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和當前這個類在同一個目錄下)

[java] view plain copy

span style=”white-space:pre” /spanClassLoader c = this.getClass().getClassLoader();

InputStream in = c.getResourceAsStream(“test.txt”);

String s = IOUtils.toString(in);

System.out.println(s);

出了異常之後,當時也找不到是哪裡出現空指針了,在網上進行了一頓摸索之後,原來這樣可以查找出某個對象是否為空,而且通常都要加上這個判斷:

[java] view plain copy

span style=”white-space:pre” /spanClassLoader 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(Stringpath):

1.路徑以「/」開頭,相對classes路徑;

2.路徑不以「/」開頭,相對當前class文件所有路徑,例如在cn.itcast.servlet.MyServlet中執行,那麼相對/classes/cn/itcast/servlet/路徑;

ClassLoader類的getResourceAsStream(Stringpath):

相對classes路徑;

java.lang.nullpointerexception是什麼意思

public class NullPointerExceptionextends RuntimeException/dt當應用程序試圖在需要對象的地方使用 null 時,拋出該異常。這種情況包括: 調用 null 對象的實例方法。 訪問或修改 null 對象的欄位。 將 null 作為一個數組,獲得其長度。 將 null 作為一個數組,訪問或修改其時間片。 將 null 作為 Throwable 值拋出。 應用程序應該拋出該類的實例,指示其他對 null 對象的非法使用。

java.lang.nullpointerexception怎麼解決

首先找到發生異常的那行,然後尋找逐步向上找源頭。如果沒有必要查找源頭,可以直接繞過它。譬如:

1,ListString books = BooKDAO.findAll();

2,int size = books.size();

如果第2行發生空指針異常了,知道books肯定為null了,這時查找BookDAO.的findAll方法,如果findAll()方法又調用了其他的方法,可以繼續查下去。如果沒有業務需要,可以直接寫成:

ListString books = BooKDAO.findAll();

int size = 0;

if(books != null){

size = books.size();

}

或者

ListString books = BooKDAO.findAll();

int size = 0;

try{

size = books.size();

}catch(NullpointerException){

size = 0;或者不寫或者列印錯誤

}

擴展資料

最重要的類是Object(它是類層次結構的根)和 Class(它的實例表示正在運行的應用程序中的類)。把基本類型的值當成一個對象來表示通常很有必要。包裝器類 Boolean、Character、Integer、Long、Float 和 Double 就是用於這個目的。

類 Math 提供了常用的數學函數,比如正弦、餘弦和平方根。類似地,類 String 和 StringBuffer 提供了常用的字元串操作。

類 ClassLoader、Process、Runtime、SecurityManager 和 System 提供了管理類的動態載入、外部進程創建、主機環境查詢(比如時間)和安全策略實施等「系統操作」。

類 Throwable 包含了可能由 throw 語句拋出的對象(§14.16)。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!==nullrb!=””) 或者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)

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245777.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:11
下一篇 2024-12-12 13:11

相關推薦

發表回復

登錄後才能評論