一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

淺談Java虛擬機異常處理論文

時(shí)間:2024-10-09 13:35:45 其他類(lèi)論文 我要投稿

淺談Java虛擬機異常處理論文

  1異常的分類(lèi)

淺談Java虛擬機異常處理論文

  1.1編譯時(shí)異常(checked異常)

  Java認為checked異常都是可以再編譯階段被處理的異常,所以它強制程序處理所有的checked異常,而Runtime異常無(wú)需處理,java程序必須顯示處理checked異常,如果程序沒(méi)有處理,則在編譯時(shí)會(huì )發(fā)生錯誤,無(wú)法通過(guò)編譯。checked異常體現了java設計哲學(xué):沒(méi)有完善處理的代碼根本不會(huì )被執行,體現了java的嚴謹性,對于構造大型、健壯、可維護的應用系統而言,錯誤處理是整個(gè)應用需要考慮的重要方面。Java異常處理機制,在程序運行出現意外時(shí),系統會(huì )生成一個(gè)Exception對象來(lái)通知程序,從而實(shí)現將“業(yè)務(wù)功能實(shí)現代碼”和“錯誤處理代碼”分離,提供更好的可讀性。如果執行try塊里的業(yè)務(wù)邏輯代碼時(shí)出現異常,系統會(huì )自動(dòng)生成一個(gè)異常對象,該異常對象被提交給運行環(huán)境,這個(gè)過(guò)程被稱(chēng)為拋出(throw)異常。Java環(huán)境收到異常對象時(shí),會(huì )尋找合適的catch塊,如果找不到,java運行環(huán)境就會(huì )終止,java程序將退出1.2運行時(shí)異常(Runtime異常)

  運行時(shí)異?梢圆惶幚。當出現這樣的異常時(shí),總是由虛擬機接管。比如我們從來(lái)沒(méi)有人去處理過(guò)Null Pointer Exception異常,它就是運行時(shí)異常,并且這種異常還是最常見(jiàn)的異常之一。出現運行時(shí)異常后,系統會(huì )把異常一直往上層拋,一直遇到處理代碼。如果沒(méi)有處理塊,到最上層,如果是多線(xiàn)程就由Thread.run()拋出,如果是單線(xiàn)程就被main()拋出。拋出之后,如果是線(xiàn)程,這個(gè)線(xiàn)程也就退出了。如果是主程序拋出的異常,整個(gè)程序也就退出了。運行時(shí)異常是Exception的子類(lèi),也有一般異常的特點(diǎn),是可以被Catch塊處理的。只不過(guò)往往不對它處理罷了。也就是說(shuō),如果不對運行時(shí)異常進(jìn)行處理,那么出現運行時(shí)異常之后,要么是線(xiàn)程中止,要么是主程序終止。

  2虛擬機的特性及異常處理

  Java虛擬機(Java Virtual Machine)簡(jiǎn)稱(chēng)JVM Java,虛擬機是一個(gè)想象中的機器,在實(shí)際的計算機上通過(guò)軟件模擬來(lái)實(shí)現。Java虛擬機有自己想象中的硬件,如處理器、堆棧、寄存器等,還具有相應的指令系統。

  (1)JVM寄存器。所有的CPU均包含用于保存系統狀態(tài)和處理器所需信息的寄存器組。如果虛擬機定義較多的寄存器,便可以從中得到更多的信息而不必對;騼却孢M(jìn)行訪(fǎng)問(wèn),這有利于提高運行速度。然而,如果虛擬機中的寄存器比實(shí)際CPU的寄存器多,在實(shí)現虛擬機時(shí)就會(huì )占用處理器大量的時(shí)間來(lái)用常規存儲器模擬寄存器,這反而會(huì )降低虛擬機的效率。針對這種情況,JVM只設置了4個(gè)最為常用的寄存器。

  (2)JVM棧結構。作為基于棧結構的計算機,Java棧是JVM存儲信息的主要方法。當JVM得到一個(gè)java字節碼應用程序后,便為該代碼中一個(gè)類(lèi)的每一個(gè)方法創(chuàng )建一個(gè)?蚣,以保存該方法的狀態(tài)信息。每個(gè)?蚣馨ㄒ韵氯(lèi)信息:局部變量執行環(huán)境操作數棧局部變量用于存儲一個(gè)類(lèi)的方法中所用到的局部變量。vars寄存器指向該變量表中的第一個(gè)局部變量。執行環(huán)境用于保存解釋器對Java字節碼進(jìn)行解釋過(guò)程中所需的信息。它們是:上次調用的方法、局部變量指針和操作數棧的棧頂和棧底指針。執行環(huán)境是一個(gè)執行一個(gè)方法的控制中心。

  (3)JVM碎片回收堆。Java類(lèi)實(shí)例所需的存儲空間是在堆上分配的。解釋器具體承擔為類(lèi)實(shí)例分配空間的工作。解釋器在為一個(gè)實(shí)例分配完存儲空間后,便開(kāi)始記錄對該實(shí)例所占用的內存區域的使用。一旦對象使用完畢,便將其回收到堆中。在Java語(yǔ)言中,除了new語(yǔ)句外沒(méi)有其他方法為一對象申請和釋放內存。對內存進(jìn)行釋放和回收的工作是由Java運行系統承擔的。這允許Java運行系統的設計者自己決定碎片回收的方法。在SUN公司開(kāi)發(fā)的Java解釋器和HotJava環(huán)境中,碎片回收用后臺線(xiàn)程的方式來(lái)執行。這不但為運行系統提供了良好的性能,而且使程序設計人員擺脫了自己控制內存使用的風(fēng)險。

  3結語(yǔ)

  通常情況下,程序會(huì )很少自行拋出系統異常,因為異常的類(lèi)名通常包含了該異常的有用信息,所以在選擇拋出什么異常時(shí),應該選擇合適的異常類(lèi),從而可以明確地描述異常情況,這樣程序常常需要定義異常類(lèi)。對于運行時(shí)異常,我們不要用try...catch來(lái)捕獲處理,而是在程序開(kāi)發(fā)調試階段,盡量去避免這種異常,一旦發(fā)現該異常,正確的做法就會(huì )改進(jìn)程序設計的代碼和實(shí)現方式,修改程序中的錯誤,從而避免這種異常。捕獲并處理運行時(shí)異常是好的解決辦法,因為可以通過(guò)改進(jìn)代碼實(shí)現來(lái)避免該種異常的發(fā)生。

【淺談Java虛擬機異常處理論文】相關(guān)文章:

淺談幾種特殊土地基的工程特性及地基處理論文04-19

淺談如何處理秘書(shū)與領(lǐng)導之間的關(guān)系論文文獻12-09

虛擬機應用的中職計算機教學(xué)應用論文02-25

Java專(zhuān)業(yè)論文開(kāi)題報告03-27

淺談我國環(huán)境工程中城市污水處理論文02-20

淺談石油化工企業(yè)消防污水收集與處理論文02-21

淺談教育論文的寫(xiě)作11-20

淺談修改論文的常識12-08

淺談問(wèn)題設計論文02-24

淺談如何修改論文03-21

  • 相關(guān)推薦
一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看