亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

淺談Java虛擬機(jī)異常處理論文

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

淺談Java虛擬機(jī)異常處理論文

  1異常的分類

淺談Java虛擬機(jī)異常處理論文

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

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

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

  2虛擬機(jī)的特性及異常處理

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

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

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

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

  3結(jié)語

  通常情況下,程序會(huì)很少自行拋出系統(tǒng)異常,因?yàn)楫惓5念惷ǔ0嗽摦惓5挠杏眯畔,所以在選擇拋出什么異常時(shí),應(yīng)該選擇合適的異常類,從而可以明確地描述異常情況,這樣程序常常需要定義異常類。對(duì)于運(yùn)行時(shí)異常,我們不要用try...catch來捕獲處理,而是在程序開發(fā)調(diào)試階段,盡量去避免這種異常,一旦發(fā)現(xiàn)該異常,正確的做法就會(huì)改進(jìn)程序設(shè)計(jì)的代碼和實(shí)現(xiàn)方式,修改程序中的錯(cuò)誤,從而避免這種異常。捕獲并處理運(yùn)行時(shí)異常是好的解決辦法,因?yàn)榭梢酝ㄟ^改進(jìn)代碼實(shí)現(xiàn)來避免該種異常的發(fā)生。

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

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

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

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

Java專業(yè)論文開題報(bào)告03-27

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

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

淺談教育論文的寫作11-20

淺談修改論文的常識(shí)12-08

淺談問題設(shè)計(jì)論文02-24

淺談如何修改論文03-21

  • 相關(guān)推薦