本文目錄一覽:
- 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和當前這個類在同一個目錄下)
[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