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

    基于類文件的Java程序運行時異常分析技術(shù)

    2014-04-29 00:00:00苑隆寅
    計算機光盤軟件與應用 2014年7期

    摘 要:本文對類文件之中Java程序運行階段的異常進行了分析。其可以通過無Java源代碼文件的條件之下,直接實現(xiàn)類文件的處理。異常跟普通的警告等有一定的區(qū)別。當應用程序發(fā)生異常時,會自動進行錯誤源代碼的跟蹤并加以提示,進而提升技術(shù)人員調(diào)試及開發(fā)的能力。

    關(guān)鍵詞:Java類文件;運行異常;依賴分析

    中圖分類號:TP312.1

    Java是種能夠撰寫跨平臺應用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,是由Sun Microsystems公司在1995年5月推廣的Java程序設(shè)計語言及Java平臺,也就是JavaEE,JavaME及JavaSE的總稱。Java自創(chuàng)立以來就十分流行,發(fā)展極為迅速,并且對C++語言產(chǎn)生了有力的沖擊。Java技術(shù)具備極好的高效通用性、平臺移植性以及安全性。但也不代表其是萬能的,以下對根據(jù)類文件中的Java程序運行中異常分析技術(shù)。

    1 程序的錯誤類型

    在程序的設(shè)計之中,不管規(guī)模大小,出現(xiàn)錯誤總是難以避免。程序設(shè)計幾乎沒有可以一次完成的,沒有錯誤出現(xiàn),在編程的過程之中因為種種原因,經(jīng)常會有這樣或是那樣的問題出現(xiàn),這些程序上的錯誤就是人們常說的“Bug”,對Bug實行檢測并且加以修正的方式就是“Debug”,即為調(diào)試。

    基本上所有的集成開發(fā)環(huán)境都提供了強大的和程序調(diào)試功能,在程序進行編譯,連接,運行時,會對程序之中錯誤實行診斷。程序的錯誤抽象的分為三類:語法錯誤、運行錯誤及邏輯錯誤。

    1.1 出現(xiàn)語法錯誤。語法錯誤是因編程中輸入的語法規(guī)則不符合標準而出現(xiàn)的。程序編譯就通不過,程序不能運行起來。此類錯誤最簡單,調(diào)試起來相對容易。比如:表達方式存在殘缺、必要的標點符號缺失、關(guān)鍵字的輸入有誤、數(shù)據(jù)類型不相符、循環(huán)語句或者是選擇語句的關(guān)鍵字不相符等等。通常,編譯器對程序進行編譯的過程中,會把檢測到的語法錯誤以提示的方式列舉出來,又稱為編譯錯誤。

    語法錯誤的調(diào)試,則可以由集成開發(fā)環(huán)境提供的調(diào)試功能來實現(xiàn),在程序進行編譯時,編譯器會對程序中的語法錯誤進行診斷。

    編譯診斷的語法錯誤分為3種:(1)致命錯誤:這個錯誤大多是編譯程序內(nèi)部發(fā)生的錯誤,發(fā)生這類錯誤、時,編譯被迫中止,只能重新啟動編譯程序,但是這類錯誤很少發(fā)生,為了安全,編譯前最好還是先保存程序。(2)錯誤:這個錯誤通常是在編譯時,語法不當所引起的。例如:括號不匹配,變量未聲明等。產(chǎn)生這類錯誤時,編譯程序會出現(xiàn)報錯提示,我們根據(jù)提示對源程序進行修改即可。這類錯誤是出現(xiàn)最多的。(3)警告:是指被編譯程序懷疑有錯,但是不確定,有時可強行通過。例如:沒有加void聲明的主函數(shù)沒有返回值,double數(shù)據(jù)被轉(zhuǎn)換為float類型等。這些警告中有些會導致錯誤,有些可以通過。

    常規(guī)解決方法:此類錯誤一般程序編譯系統(tǒng)會自動提示相應的錯誤地點和錯誤原因,比如哪一行代碼少了個括號等諸如此類的提示,常見的錯誤,看懂直接改正即可,如果是看不懂原因,可以將錯誤提示信息輸入搜索引擎查找一下,一般都能找到具體的解決辦法?;蛘哂行┚幊唐脚_會本身提供一個本地或者在線的信息庫,提供詳細的錯誤原因和解決辦法,比如微軟的.NET開發(fā)平臺。

    1.2 運行錯誤。指程序在運行過程中出現(xiàn)的錯誤。程序通過語法錯誤檢測,但是運行的時候出現(xiàn)錯誤,導致程序被迫終止,此類錯誤有特定的發(fā)生條件,因此能夠準確的定位錯誤代碼段,因而調(diào)試也比較方便。例如:除法運算時除數(shù)為0、數(shù)組下標越界、文件打不開、磁盤空間不夠、數(shù)據(jù)庫連接錯誤等。此類錯誤發(fā)生時,編譯平臺一般也會提示相應的信息,對于常規(guī)的錯誤會有比較精確地提示,但有時提示的錯誤原因會比較模糊,但因為此類錯誤一般在程序運行時,只在特定的條件下才會發(fā)生,所以根據(jù)錯誤發(fā)生的條件,能夠大致判斷程序出錯的代碼段,結(jié)合錯誤的原因,也能比較方便的調(diào)試出錯誤。

    1.3 邏輯錯誤。程序運行之后,沒有得到設(shè)計者預期的結(jié)果,這就說明程序存在邏輯錯誤。這種錯誤在語法上是有效的,但是在邏輯上是錯誤的。

    2 Java的異常處理

    程序的錯誤就是通常的異常,也叫Exception。對于語法錯誤,Java編譯系統(tǒng)在編就能發(fā)現(xiàn)檢查出錯誤。對于邏輯錯誤,編譯系統(tǒng)是無法發(fā)現(xiàn)錯誤的,錯誤需要人為去發(fā)現(xiàn)排除錯誤。對于運行出現(xiàn)錯誤,Java語言中表現(xiàn)異常的時候,利用一個專門的類來顯示一種特定異常的情況,于系統(tǒng)之中傳遞的異常情況則是該類的對象,全部呈現(xiàn)異常的類構(gòu)成的體系就為Java語言之中的異常類體系。

    2.1 Java的異常類。Java的異常為單個對象,全部的異常均直接或者是間接地繼承Throwable類。而Throwable類的繼承層次組成為:Throwabl分為Error及Exception,Exception類下設(shè)RuntimeException。為有利于對這些可以傳遞對象的管理,Java API之中專門設(shè)有java.lang.Throwable類,唯有此類子類的對象才能夠?qū)崿F(xiàn)異常在系統(tǒng)中的傳遞體系。此類的兩個子類為:(1)Error類。此類代表錯誤,對程序不能恢復的異常情況進行指示。對于全部錯誤類型及其子類,均不需要程序完成處理。較為多見的Error類,比如內(nèi)存溢出StackOverflowError等問題。(2)Exception類。此類代表異常,對程序之中能夠進行恢復的異常情況進行指示。此類為全部Java語言異常類體系之中的父類。運用此類,能夠代表全部的異常問題。

    掌握異常類的分類,有利于后續(xù)語法之中的編寫,也能夠出現(xiàn)使用異常類時選擇最為合適的異常類類型。

    2.2 Java異常處理的機制。于一個方法的運行過程之中,若出現(xiàn)了異常,那么這個方法形成了一個代表該異常的對象或者是Java虛擬機出現(xiàn)了一個包含了異常詳細的信息,而且將它反饋給運行階段系統(tǒng),正在運行的系統(tǒng)會自動找出有關(guān)的代碼,對出現(xiàn)的異常進行及時的處理,運行系統(tǒng)于方法的調(diào)用棧之中進行搜索,從出現(xiàn)異常的地方進行回朔式的查找,依據(jù)被調(diào)用的順序進行倒退檢查,直至有異常處理的方法被找到。

    2.3 異常管理中的實用性建議。針對操作數(shù)據(jù)庫異常而言,Java應用程序僅僅指示一個異常類。單純依靠Java應用程序?qū)﹀e誤信息的指示能力,基本不可能為應用程序人員對錯誤排除提供有利依據(jù),僅能明確的指出是應用程序錯誤或者是因為數(shù)據(jù)庫錯誤造成這個異常的出現(xiàn)。為了能夠進一步的指明出現(xiàn)錯誤問題的原因,需要在數(shù)據(jù)庫層面設(shè)定異常的時候,對錯誤原因進行具體的說明。通常對應用程序開發(fā)人員的要求相對較高,需要其有豐富的工作經(jīng)驗、嚴密的思維邏輯以及扎實的專業(yè)知識。盡管存在的難度較大,程序開發(fā)人員還是要加強自身的創(chuàng)新與實踐能力,向預期目標發(fā)展,并非通過客戶的反饋發(fā)現(xiàn)其中存在的錯誤。

    3 結(jié)束語

    Java普遍運用在個人PC機、科學超級計算機、互聯(lián)網(wǎng)、數(shù)據(jù)中心、游戲控制臺以及移動電話等領(lǐng)域,還擁有全球之中最大的開發(fā)者專業(yè)群體。在全球云計算以及移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境之下,Java有廣闊的前景,而且有顯著的優(yōu)勢。對Java有異常拋出詳細信息實行分析,可以提升對異常的分析能力,從而進行更精準的定位,提升調(diào)試及開發(fā)的效率。

    參考文獻:

    [1]黃金虎.基于JVM執(zhí)行事件的動態(tài)監(jiān)測技術(shù)研究[D].華中科技大學,2012(01).

    [2]楊克嶠.Java程序優(yōu)化與數(shù)據(jù)競爭檢測的研究[D].復旦大學,2010(10).

    [3]李倩.Java程序指向分析研究[D].南京大學,2012(08).

    [4]陳紅躍,張宏軍,陳剛.Java異常處理策略研究[J].計算機技術(shù)與發(fā)展.2012(07).

    作者簡介:苑隆寅(1973.03-),四川廣安人,教師,講師,碩士研究生,研究方向:系統(tǒng)分析、數(shù)字資源利用。

    作者單位:重慶郵電大學移通學院,重慶 401520

    菏泽市| 凤庆县| 万盛区| 公主岭市| 陈巴尔虎旗| 西峡县| 垫江县| 大同县| 商都县| 上饶县| 烟台市| 台州市| 无锡市| 长海县| 青浦区| 清水河县| 安国市| 时尚| 玉溪市| 资中县| 那坡县| 内乡县| 克拉玛依市| 海口市| 抚州市| 崇明县| 确山县| 溧水县| 宁远县| 壶关县| 大丰市| 高雄市| 天门市| 固阳县| 宜宾县| 桐城市| 姚安县| 鸡东县| 武隆县| 正阳县| 湟中县|