亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于JAVA常見(jiàn)異常處理研究

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

        李婷玉

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

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

        一、前言

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

        二、Java異常處理機(jī)制

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

        三、異常處理的原則

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

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

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

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

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

        (二)捕獲異常

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

        在運(yùn)行時(shí),一個(gè)try子句或許會(huì)拋出許多種異常,正因?yàn)榇?,在catch的定義中,就要求對(duì)catch進(jìn)行多重定義,以對(duì)多個(gè)異常進(jìn)行捕捉。一般情況下,一個(gè)catch語(yǔ)句只能捕捉一個(gè)異常,如果要catch語(yǔ)句捕捉多個(gè)異常,它就要滿足以下三個(gè)條件的任何條件之一:

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

        (2)其他異常的子類的參數(shù)與該異?;蛘咂渥宇惖膮?shù)相同

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

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

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

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

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

        參考文獻(xiàn):

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

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

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

        五十六十日本老熟妇乱| 久久高潮少妇视频免费| 亚洲av毛片在线播放| 亚洲综合图色40p| 无码av免费一区二区三区| 亚洲色欲Aⅴ无码一区二区| 日韩性感av一区二区三区| 亚洲黄色天堂网站在线观看禁18| 无码人妻精品一区二区在线视频| 亚洲一区二区在线| 有码中文字幕一区二区| 国产精品久久久免费精品| 4hu四虎永久在线观看| 97人妻视频妓女网| 日本一二三区在线视频观看 | 亚洲激情一区二区三区不卡| 国产激情综合在线观看| 婷婷四房播播| 亚洲国产精品夜男人天堂| 亚洲天堂精品成人影院| 亚洲av最新在线网址| 337p日本欧洲亚洲大胆色噜噜| 久久久免费精品国产色夜| 色婷婷一区二区三区四区成人网 | 无码人妻一区二区三区免费| 中文字幕亚洲精品码专区| 91日韩东京热中文字幕| 激情第一区仑乱| 91精品国产免费久久久久久青草| 日本午夜a级理论片在线播放| 国产亚洲精品美女久久久m| 国产精品久久久av久久久| 亚洲精品高清av在线播放| 亚洲av不卡一区男人天堂| 人人妻人人妻人人片av| 亚洲深夜福利| 久久精品国产熟女亚洲av麻豆| 亚洲国产精品成人综合色| 国产午夜在线观看视频播放| 亚洲精品中文字幕码专区| 亚洲精品国精品久久99热|