• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于JAVA常見異常處理研究

    2016-08-23 04:26:52李婷玉
    速讀·中旬 2016年7期

    李婷玉

    摘 要:程序設(shè)計語言的重要標志就是異常處理機制,用來對程序運行在程序設(shè)計過程中出現(xiàn)的異常情況進行處理。異常處理在傳統(tǒng)的程序設(shè)計語言里十分的復雜,Java不僅將異常處理機制引進來,作為程序設(shè)計語言,它還面向?qū)ο?。異常處理如果做到合理完備,不僅可以使軟件的健壯性以及程序運行的可靠性大為增加,還可以對錯誤的位置進行快速的確定。

    關(guān)鍵詞:Java;異常處理;處理原則

    一、前言

    編程不出錯是保證程序正常運行的基礎(chǔ),但編程出現(xiàn)異常卻是經(jīng)常的事。Java包括了三類錯誤:語法錯誤、運行錯誤、邏輯錯誤。Java的對象極為廣泛,是面向?qū)ο蟮某绦蛟O(shè)計語言。在編程的時候,如果有應(yīng)對程序異常的機制,編程就可減少錯誤代碼所造成的損失。本文提供了處理異常的機制及原則,可給編程人員減少大量的工作。

    二、Java異常處理機制

    程序運行錯誤會引起異常。沒有異常捕獲和處理代碼的程序會非正常終止,并可能引起嚴重問題。在編程的時候,如果用面向?qū)ο蟮姆椒ㄌ幚懋惓#捅仨毥㈩惖膶哟?。而在Java中,Throwable是所有可以通過throw拋出或catch捕獲錯誤的基類。Throwable類有兩個直接子類:Error類和Exception類。Error類由Java虛擬機拋出,描述內(nèi)部的系統(tǒng)錯誤,如虛擬機錯誤、裝載錯誤、動態(tài)連接錯誤、GUI實時系統(tǒng)的嚴重錯誤,這類錯誤很少發(fā)生,如果發(fā)生,除了通知用戶以及盡量穩(wěn)妥地結(jié)束程序以外,幾乎什么也不能做。究其原因,與電腦的硬件及運行系統(tǒng)有關(guān),大多跟程序的編寫并無關(guān)系,所以,不比用程序去捕捉(在極為特別的條件下,也要用程序去捕捉)。Exception類描述由程序和外部環(huán)境引起的錯誤,這些錯誤能通過程序捕獲和處理。在編程時,程序出現(xiàn)的大部分異??捎蒚hrowable或者所包含的子類去表示,這種表示可傳遞發(fā)生點與連接點之間的程序。程序中的異常捕捉可由try語句中的catch來建立。在處理程序異常的整個過程中,Java VM把線程中尚在運行的語句、方法、表達式和域初始化表達式給終止掉。此過程會處在不斷活動中,只有當出現(xiàn)異常句柄時才會終止,同時會彈出所處理異常的類來表示它已處理異常。如若未彈出這樣的句柄,就要用另外一種方法來處理該異常,即調(diào)用父線程Thread Group的方法uncaught Exception,以此來處理潛在的異常,此方法能夠處理絕大部分的異常。

    三、異常處理的原則

    Java異常處理結(jié)構(gòu)由三部分組成,包括try、catch和finally。其中try塊以關(guān)鍵字try開始,后面跟由花括號({})括起來的語句塊,其中包括可能拋出異常的語句;catch塊以關(guān)鍵字catch開始,后面跟圓括號中的異常參數(shù)和花括號中的處理異常的語句塊;finally塊包含清除程序沒有釋放的資源等。在程序中,不管try塊以何種方式退出,最終都要流入finally塊,執(zhí)行finally塊的代碼。Java通常在處理異常時有聲明異常、拋出異常及捕捉異常等三種處理模式。

    (一)創(chuàng)建與拋出異常

    在程序的編寫中,程序不能正常運行時,窗口會創(chuàng)建和跑出異常。在Java中,能夠?qū)崿F(xiàn)不在方法中直接捕獲,而是在Throw語句中將異常拋給上層。Throw的最大作用在于能夠明確地拋出異常;在這個過程中,要以Throwable的實例句柄為基礎(chǔ),利用參數(shù)傳到catch語句中(也可以用new語句進行創(chuàng)建)。

    Throw:通常情況下,異常捕捉的實現(xiàn)都是靠系統(tǒng)來完成的,在實際編程中也可以通過throw語句來跑出異常。throw語句的格式為:throw new異常類名(信息)。其中異常類名為系統(tǒng)異常類名或用戶自定義的異常類名,“信息”是可選項。稱為異常信息,可以使用get Message()獲得。

    throws:在編程中,如果由一個方法引發(fā)的異常,并且自身無處理功能,那么編程者就要指明該異常,并且運用調(diào)用者來處理該異常。Throws還有一個重要的功能,就是標出方法中的所有異常。Runtime Exception、Error以及它們的子類都稱為免檢異常。除Runtime Exception、Error(包括它們的子類)以外的所有異常都稱作必檢異常,必檢異常是指編譯器會強制編程人員檢查異常并處理這些異常。為避免過多地使用try-catch,Java語言不允許編寫捕獲或者聲明免檢異常的代碼。所以在程序中如果想通過方法來引發(fā)Exception或除Runtime Exception之外的其子類,就需要throws語句來顯示異。

    (二)捕獲異常

    在程序的編寫中,方法語句如果要拋出異常,在此先假設(shè)異常能被捕捉并最終被處理。這種假設(shè)的好處在于預先在專注于正在解決的問題,然后在別的地方處理這些代碼中的錯誤。

    在運行時,一個try子句或許會拋出許多種異常,正因為此,在catch的定義中,就要求對catch進行多重定義,以對多個異常進行捕捉。一般情況下,一個catch語句只能捕捉一個異常,如果要catch語句捕捉多個異常,它就要滿足以下三個條件的任何條件之一:

    (1)其他異常與該異常的參數(shù)相同

    (2)其他異常的子類的參數(shù)與該異常或者其子類的參數(shù)相同

    (3)異常實現(xiàn)參數(shù)所定義的接口。

    如若所有的catch語句跟系統(tǒng)所拋出的異常都不匹配,則當前的方法不能處理該異常,系統(tǒng)的程序流程將回到該方法的上層方法,如果這層方法中catch的定義與該異常相匹配,異常將被處理;如果這層的方法中找不到相匹配的catch語句,則由Java來處理這個異常。遇到這種情況,系統(tǒng)通常會終止程序的運行,退出,退出虛擬機返回操作系統(tǒng),在標準上打印相關(guān)的異常信息。

    (三)finally的應(yīng)用

    Java對垃圾的回收是通過對系統(tǒng)的釋放和回收來實現(xiàn)的(內(nèi)存之外的資源例外)。想恢復內(nèi)存之外的資源就要回到初始狀態(tài),在此就要用到finally語句。在打開諸如網(wǎng)絡(luò)連接、圖片或者文件時,程序在運行時都有可能拋出異常(并且沒有被捕捉),資源就有可能不能被釋放。這種情況下,就要使用finally語句,在finally語句中可以把要釋放的資源寫在其中,不論try有沒有拋出出異常,finally子句能夠在回收機制發(fā)生作用前得到執(zhí)行,確保資源正確釋放。

    在編程中,Java對異常的處理有著重要的作用,是編寫程序、開發(fā)軟件不可或缺的部分,但在實際編程中卻經(jīng)常被忽視。本文分析了異常的處理機制及原則,對異常的處理有著積極的作用,很大程度上提高了系統(tǒng)的安全性和穩(wěn)定性,也提高了編程、開發(fā)軟件的效率,有效節(jié)省了人力物力。

    參考文獻:

    [1] 朱丹丹.芻議Java動態(tài)類加載機制研究與應(yīng)用[J]. 電子技術(shù)與軟件工程. 2016(07)

    [2] 張祎.項目教學法在java教學中的應(yīng)用初探[J]. 職業(yè)教育與區(qū)域發(fā)展. 2016(01)

    [3] 于守良.關(guān)于Java面向?qū)ο蟪绦蛟O(shè)計課程的思考[J]. 中國教育技術(shù)裝備. 2013(15)

    自治县| 鄂州市| 梁平县| 沁阳市| 桂林市| 鸡泽县| 安庆市| 祁连县| 吴川市| 驻马店市| 佛山市| 宁远县| 金沙县| 嘉禾县| 张家界市| 英山县| 武宁县| 通州市| 巨鹿县| 家居| 瑞丽市| 阳朔县| 互助| 常德市| 呼和浩特市| 伊春市| 合作市| 宜兰县| 东安县| 文山县| 缙云县| 临泽县| 姜堰市| 延安市| 沭阳县| 察雅县| 阜新市| 常德市| 台前县| 太康县| 千阳县|