當前位置:首頁 » 編程語言 » java列印異常信息

java列印異常信息

發布時間: 2022-06-20 16:11:13

java編寫一個能夠產生空指針異常的程序,並將其捕獲在控制台輸出異常信息,要這個代碼

一、空指針異常產生的主要原因如下:

1、當一個對象不存在時又調用其方法會產生異常obj.method() // obj對象不存在;

2、當訪問或修改一個對象不存在的欄位時會產生異常obj.method() // method方法不存在;

3、字元串變數未初始化;
4、介面類型的對象沒有用具體的類初始化。

二、實現思路:

1、利用空指針異常的表現之一:對空字元串進行操作。

2、設置一個空的字元串,然後對其進行查找操作(可以使用charAt()方法)

3、對將要出現的異常進行捕獲

4、列印到控制台

//java代碼
{

/**
*實現思路:
*1.空指針異常的表現之一:對空的字元串進行了操作
*2.設置一個空的字元串,然後對其進行查找操作(可以使用charAt()方法)
*3.對將要出現的異常進行捕獲
*4.列印到控制台
**/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub

//定義一個空的字元串
Stringstr=null;

//嘗試對空字元串進行操作,並捕獲異常,輸出異常
try{
System.out.println(str.charAt(0));
}catch(Exceptione){
System.out.println("異常信息:");
e.printStackTrace();
}
}

}

運行結果圖:

程序開發過程中的空指針異常會經常出現,要盡量保持邏輯清晰,能夠及時排查錯誤代碼,對可能發生的異常進行捕獲,不要影響主程序運行。

㈡ Java異常處理:如何避免重復列印異常

檢查日誌文件,你就能看到滿屏重復的異常。
因此,異常只能被列印一次。在哪兒打異常最好呢?。
原則就是自定義異常在拋出前列印一下,其他各層對自定義異常不作任何列印。甚至不用Catch.
對於上面WebServiceClient.login,在這列印是對的,還可以加上自己的一些log信息,如log.fatal("cannotlogintheXXXsystem");至於在其他層,就不在需要列印,處理這個異常了。這樣的異常處理沒有什麼技術含量,只是個異常處理原則,如果人人都遵循(看到自定義不處理,拋自定義異常前處理)這個原則,就能避免重復列印異常日誌
再考慮如何把友好的異常信息給終端用戶呢,所謂友好,不能總是提示「系統錯誤,請稍後再試」,因為這樣能讓使用者對系統沒有信心。好比領導交給你的任務,你沒有完成,你總不能每次都說「這是我的問題,以後改正」吧。對異常進行稍微詳細的說明,是必要的。另外,也不能總是把異常的stacktrace原封不動的現實給使用者,如java.io.IOExcepiton:Filecannotbefound.這樣會被認為你的程序質量不夠高。
可以通過異常指定類型來在Web層解釋並轉化為友好的異常
。如上列子,可以如下定義MyApplicationExceptoin
如下代碼:

㈢ java中如何獲取throws拋出的異常,並且把異常列印到指定的jsp頁面

比如你又一個方法叫a,調用了一個方法b(b方法throws了一個異常),那麼在a裡面使用try-catch捕獲這個異常,在catch塊裡面,使用jsp的request,或者session將異常對象e.getMessage的內容存儲到制定的變數裡面(例如request.setAttribute("errorMessage",e.getMessage));
然後到頁面使用EL表達式${errorMessage}取出來就好了。

㈣ java中怎麼把發生的異常列印在web頁面上

用try catch語句實現:

try{
//業務代碼
}catch(Exceptione){
e.printStackTrace();//列印異常
thrownewException("WriteInputStreamError"+e.toString());//拋給客戶端的異常
}

㈤ 為什麼java要把異常列印到堆棧

不是列印到堆棧,而是列印棧信息,因為程序執行的時候,最終還是要靠01二進制代碼執行,運行在堆棧裡面,所以出錯或拋出異常時能被捕獲到

㈥ java異常處理包含哪幾個環節

可以選擇三種方法來進行異常處理1對代碼塊用try..catch進行異常捕獲處理;

2在 該代碼的方法體外用throws進行拋出聲明,告知此方法的調用者這段代碼可能會出現這些異常,你需要謹慎處理。此時有兩種情況:
如果聲明拋出的異常是非運行時異常,此方法的調用者必須顯示地用try..catch塊進行捕獲或者繼續向上層拋出異常。
如果聲明拋出的異常是運行時異常,此方法的調用者可以選擇地進行異常捕獲處理。

3在代碼塊用throw手動拋出一個異常對象,此時也有兩種情況,跟2)中的類似:
如果拋出的異常對象是非運行時異常,此方法的調用者必須顯示地用try..catch塊進行捕獲或者繼續向上層拋出異常。
如果拋出的異常對象是運行時異常,此方法的調用者可以選擇地進行異常捕獲處理。
(如果最終將異常拋給main方法,則相當於交給jvm自動處理,此時jvm會簡單地列印異常信息)

常處理和設計的建議
1. 只在必要使用異常的地方才使用異常,不要用異常去控製程序的流程
2. 切忌使用空catch塊
3. 檢查異常和非檢查異常的選擇
4. 注意catch塊的順序
5. 不要將提供給用戶看的信息放在異常信息里
6. 避免多次在日誌信息中記錄同一個異常
7. 異常處理盡量放在高層進行
8. 在finally中釋放資源

㈦ Java 使用e.printStackTrace列印異常信息會減少內存嗎

Java拋出異常的方法有很多,其中最常用的兩個:
System.out.println(e),這個方法列印出異常,並且輸出在哪裡出現的異常,不過它和另外一個e.printStackTrace()方法不同。後者也是列印出異常,但是它還將顯示出更深的調用信息。
比如說:
A extends ---> B extends ----> C
當在創建A的過程中出現問題了,我們拋出異常。
System.out.println(e),除了標准異常外,只列印at A 然後再向外層層輸出。
e.printStackTrace(),除了標准異常外,列印
at C
at B
at A
.......再向外層調查。
在向外層調查的情況下,都一樣。最後都會回到com.sun.midp.main.Main.main

熱點內容
java軟體免費下載 發布:2025-03-20 10:26:01 瀏覽:705
安卓用什麼編譯 發布:2025-03-20 10:25:57 瀏覽:808
ftp中文軟體下載 發布:2025-03-20 10:07:47 瀏覽:508
nexus7android 發布:2025-03-20 10:06:58 瀏覽:619
安舍iq8如何修改密碼 發布:2025-03-20 10:06:17 瀏覽:880
解壓RTP 發布:2025-03-20 09:59:37 瀏覽:161
python量化分析 發布:2025-03-20 09:53:05 瀏覽:626
手機熱點有限的訪問許可權 發布:2025-03-20 09:50:46 瀏覽:440
為什麼安卓沒有ios系統流暢 發布:2025-03-20 09:50:43 瀏覽:793
python編程實例 發布:2025-03-20 09:48:19 瀏覽:294