拋出異常對象創建
回答
有兩件事創建例外第二的實例拋出異常
創建異常看起來像在這一刻,我們沒」創建類例如NullPointerException npe = new NullPointerException();
的任何實例的實例t做任何事情比創造一個實例,有時我們並沒有自己創建異常的例子,我們將會看到
創建Exception類的實例後引發異常我們throw
它,你可以拋出自己或JVM異常會做
try
{
int a = 10/0;
}catch(ArithmeticException a)
{
RuntimeException exception = new RuntimeException("a very bad error occured", a);
throw exception;
}
時的Java試圖計算10/0
它遇到算術錯誤,因此JVM創建ArithmeticException
類的實例,並拋出此創建的實例你可以捕獲它在你的catch
條款,我們創造RuntimeException
類的實例,它只是一個對象,然後用它扔throw
對於Arithmetic
異常,異常對象由JVM 在拋出異常時創建。
在內部,它執行相當於創建異常對象的new
。什麼情況是這樣的:
- 整數除法指令導致硬件陷阱/異常
- 操作系統調度此由JVM實現的一個信號處理器
- 的JVM標識引起問題線程
- 的JVM創建異常,並填充的StackFrame信息
- 的JMV拋出異常的違規線程
- 的異常傳播
- 最終,您的catch子句匹配異常並處理它。
未安裝Java new
聲明要做到這一點,需要你源代碼,
類似的事情發生在JVM中拋出異常其他情況;例如典型的NullPointerException
,ArrayIndexOutOfBoundsException
,StackOverflowError
例外,雖然在某些情況下,前3或4步被優化......取決於JVM等。
注:一個異常對象是(通常)在其中引發異常,因爲這是當所述堆棧跟蹤信息可要捕獲的點創建。在發現異常的時候,原始的堆棧已經消失了。更有甚者,如果一個異常被捕獲,然後在不同的堆棧上重新生成......或類似的東西。
您正在創建一個對象。但是你並沒有創建它的一個實例。
Exception
對象實例在有人拋出時創建。
try {
Foo foo = null;
foo.dofoo();
} catch(NullPointerException e) {
// ...
}
在這種特殊情況下,JVM創建你正在處理的catch塊NullPointerException
對象實例。
隻言片語想象的是,在JVM的某些部分有類似:
if (obj == null) {
throw new NullPointerException();
}
不要拿上面的代碼示例嚴重。這是異常拋出的例證。
- 1. 對象類拋出類拋出異常
- 2. NamedParameterJdbcTemplate對象拋出異常
- 3. 拋出異常對象
- 4. javascript對象拋出異常
- 5. 如何解決「FactoryBean在創建對象時拋出異常」
- 6. Boost.Asio app在創建acceptor對象時拋出異常
- 7. 創建對象拋出空指針異常
- 8. 對象創建異常
- 9. 反射PropertyInfo.GetValue(對象)拋出DBNull異常
- 10. 異常拋出時JRXlsExporter類的對象
- 11. 結構基類拋出異常對象
- 12. 異常拋出時嘲笑`ISession`對象
- 13. 連接對象類拋出異常
- 14. VB.net對象數組拋出異常
- 15. IIS - 創建新網站拋出異常
- 16. Tizen CLI創建項目拋出異常
- 17. 創建表拋出SQL異常
- 18. 創建NSEntityDescription後拋出異常
- 19. Powershell:創建並拋出新的異常
- 20. Java - DocumentBuilder在創建時拋出異常
- 21. 的std ::線程創建拋出異常
- 22. 拋出異常或對待異常?
- 23. 魔術異常拋出拋出異常
- 24. 拋出異常拋出異常
- 25. 對拋出的異常
- 26. 對拋出的異常
- 27. GWT SpringRoo:構建處理器對象時拋出異常
- 28. 拋出異常不拋出
- 29. Magento的事件監聽器內部創建的NuSOAP對象拋出異常
- 30. 如果調用線程不是創建對象的線程,則拋出異常
它不是在catch子句中創建的。它是由引發它的方法(在你的try-clause中)用'throw'關鍵字創建的。 – Gendarme
它由'throw'語句創建。你只需在catch塊中抓住它。 – vladatr
我的問題是,當創建一個ArithmeticException的實例時,爲什麼我們不必使用關鍵字「new」。在java中是不是這樣,你必須使用關鍵字new的所有情況? – AAM