java的運行時異常
A. java中什麼叫運行時異常
(1)運行時異常都是RuntimeException類及其子類異常,如NullPointerException、IndexOutOfBoundsException等,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發生。
當出現RuntimeException的時候,我們可以不處理。當出現這樣的異常時,總是由虛擬機接管。比如:我們從來沒有人去處理過NullPointerException異常,它就是運行時異常,並且這種異常還是最常見的異常之一。
出現運行時異常後,如果沒有捕獲處理這個異常(即沒有catch),系統會把異常一直往上層拋,一直到最上層,如果是多線程就由Thread.run()拋出,如果是單線程就被main()拋出。拋出之後,如果是線程,這個線程也就退出了。如果是主程序拋出的異常,那麼這整個程序也就退出了。運行時異常是Exception的子類,也有一般異常的特點,是可以被catch塊處理的。只不過往往我們不對他處理罷了。也就是說,你如果不對運行時異常進行處理,那麼出現運行時異常之後,要麼是線程中止,要麼是主程序終止。
如果不想終止,則必須捕獲所有的運行時異常,決不讓這個處理線程退出。隊列裡面出現異常數據了,正常的處理應該是把異常數據舍棄,然後記錄日誌。不應該由於異常數據而影響下面對正常數據的處理。
(2)非運行時異常是RuntimeException以外的異常,類型上都屬於Exception類及其子類。如IOException、SQLException等以及用戶自定義的Exception異常。對於這種異常,JAVA編譯器強制要求我們必需對出現的這些異常進行catch並處理,否則程序就不能編譯通過。所以,面對這種異常不管我們是否願意,只能自己去寫一大堆catch塊去處理可能的異常。
B. JAVA中可以捕獲運行時異常嗎
只要是 Throwable 的子類實例都可以捕獲~
只是不推薦,因為運行時異常多是由於邏輯錯誤導致的,屬於應該解決的 bug。但是有時候為了增強用戶體驗,保證 Crash 次數降到最低,人為捕捉一些運行時異常……
C. java中運行時異常和非運行時異常的定義及其異同是什麼
這個網路上找找很多的,主要區別在於非運行時異常必須在代碼中顯示的聲明捕獲也就是放在try{}catch(){}塊中,或者在方法上申明throws 來拋出異常,
運行時異常不需要特意的申明,一般運行時異常都是虛擬機出現問題了才會報,比如你寫個死循環導致內存不足什麼的
D. java出現運行時異常有什麼問題
-數組越界訪問
ArrayStoreException -
數據存儲異常,寫數組操作時,對象或數據類型不兼容
ClassCastException - 類型轉換異常
IllegalArgumentException
- 方法的參數無效
IllegalThreadStateException -試圖非法改變線程狀態,比方說試圖啟動一已經運行的線程
NullPointerException -
試圖訪問一空對象的變數、方法或空數組的元素
NumberFormatException -
數據格式異常,試圖把一字元串非法轉換成數值(或相反)
SecurityException -
如果Applet試圖執行一被WWW瀏覽器安全設置所禁止的操作
-如改變了某一類定義,卻沒有重新編譯其他引用了這個類的對象。如某一成員變數的聲明被從靜態改變為非靜態,但其他引用了這個變數的類卻沒有重新編譯,或者相反。如刪除了類聲明中的某一域或方法,但沒有重新編譯那些引用了這個域或方法的類
OutOfMemoryException -
內存不足,通常發生於創建對象之時
NoClassDefFoundException-JAVA運行時系統找不到所引用的類
IncompatibleTypeException -試圖實例化一個介面,Java運行時系統將拋出這個異常
UnsatisfiedLinkException-如果所需調用的方法是C函數,但Java運行時系統卻無法連接這個函數
系統內部故障所導致的異常情況,可能是因為Java運行時系統本身的原因。如果發現一可重現的InternalException,可以直接給Sun公司發電郵[email protected]
E. Java之運行時異常與編譯時異常區別
Java中用2種方法處理異常:
1.在發生異常的地方直接處理;
2.將異常拋給調用者,讓調用者處理。
Java常見的異常:
(1)編譯時異常:Java.lang.Exception
(2)運行期異常:Java.lang.RuntimeException
Java.lang.Exception和Java.lang.Error繼承自Java.lang.Throwable;
Java.lang.RuntimeException繼承自Java.lang.Exception.
編譯時異常:
程序正確,但因為外在的環境條件不滿足引發。例如:用戶錯誤及I/O問題----程序試圖打開一個並不存在的遠程Socket埠。這不是程序本身的邏輯錯誤,而很可能是遠程機器名字錯誤(用戶拼寫錯誤)。對商用軟體系統,程序開發者必須考慮並處理這個問題。Java編譯器強制要求處理這類異常,如果不捕獲這類異常,程序將不能被編譯。
運行期異常:
這意味著程序存在bug,如數組越界,0被除,入參不滿足規范.....這類異常需要更改程序來避免,Java編譯器強制要求處理這類異常。
F. JAVA問題:運行時異常和一般異常有何區別
運行錯誤?一般錯誤?
錯誤好像是不分類的吧,錯誤一般是通不過編譯的,
eg:在eclipse中編程時,如果調的是自動編譯,每次出現紅線或者出現紅叉時
那個就叫做錯誤。
我感覺你說的應該是異常:
異常分為運行時異常和受檢測異常,
運行時異常是系統運行時發出的異常,程序員控制不了的,這類異常不需要try,catch和throws
exception語句,是由java虛擬機拋出的,並且自動捕獲拋出的main方法中,我們不能對這個異常進行處理,它會直接終止程序。一般遇到的就是空指針異常,數組越界異常等,這些異常一般是我們可以在前台控制台可以看到的,相信你也看到過吧。
受檢測異常指的就是我們可以處理的異常,我們可以通過try
catch語句捕獲並且處理(也可以不處理直接向上層拋出),處理之後程序還可以繼續執行,不會終止程序,如果每一層都每一處理,則會終止程序。
希望你看了後能有所收獲。(提示:其實異常和錯誤都繼承了Throwable這個類,至於細致的你自己看看書)
G. Java的運行時異常,為什麼要有運行時異常,設置這個類有什麼好處
異常分兩種。
一種就是不用我們加上異常類,在編譯過程會自動提示編譯不通過,一般是屬於語法有問題。
第二種就是運行時異常,這個異常信息會告訴你哪裡的代碼寫得有問題,一般屬於邏輯錯誤。
明白了沒
H. java 運行時異常和受控異常
異常就兩種 運行異常 , try catch異常 另外一個和異常同級叫 error
他問的你是try catch異常 看來你被繞進去了,
I. java異常問題: 1,對RuntimeException運行時異常的處理方式有哪些,都是怎麼處
對整個問題不是很理解,異常的處理方式通常有兩種,捕獲和不捕獲,方法產生異常時如果用try……catch……捕獲了,你可以按照你想要的邏輯進行處理(打日誌,判定失敗等),這個看個人了,如果不捕獲,那個包含這個異常的方法聲明出必須拋出,有上層方法處理,如果到main方法也是拋出,經交給java虛擬機處理。
方法內部如果捕獲了且拋出的,方法要加聲明;如果不拋出,方法上不加聲明,但是如果不捕獲,是一定要加聲明的。
J. java運行時異常有哪些
常見的五種異常:
1、ClassCastException(類轉換異常)
2、IndexOutOfBoundsException(數組越界)
3、NullPointerException(空指針)
4、ArrayStoreException(數據存儲異常,操作數組時類型不一致)
5、還有IO操作的BufferOverflowException異常