日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解讀Java異常處理和異常機制_JSP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解析struts+spring+hibernat整合練習(xí)示例
工具: Eclipse3.1、MyEclipse4.03、Tomcat5.5.9、Properties Editor插件、MySql4.1.13 新建工程:名稱為 login 創(chuàng)建Struts框架 創(chuàng)建 index. jsp ,增加一鏈接指向 login.jsp 按下Ctrl + N,創(chuàng)建 login.jsp、LoginAction,使用MyEclipse的向?qū)Ь涂梢粤耍?記

    JAVA程序在運行過程中經(jīng)常會出現(xiàn)一些錯誤異常,對這些的處理是編程工作的重要一環(huán),本文就些做一簡單介紹。
    JAVA中用2種方法處理異常: 
    1.在發(fā)生異常的地方直接處理; 
    2.將異常拋給調(diào)用者,讓調(diào)用者處理。 
    JAVA異常可分為3種: 
  (1)檢查性異常:java.lang.Exception
  (2)運行期異常:java.lang.RuntimeException
  (3)錯誤:java.lang.Error 
頂層是java.lang.Throwable類,檢查性異常,運行期異常,錯誤都是這個類的子孫類。 
java.lang.Exception和java.lang.Error繼承自java.lang.Throwable,而java.lang.RuntimeException繼承自java.lang.Exception. 
檢查性異常------程序正確,但因為外在的環(huán)境條件不滿足引發(fā)。例如:用戶錯誤及I/O問題----程序試圖打開一個并不存在的遠程Socket端口。這不是程序本身的邏輯錯誤,而很可能是遠程機器名字錯誤(用戶拼寫錯誤)。對商用軟件系統(tǒng),程序開發(fā)者必須考慮并處理這個問題。JAVA編譯器強制要求處理這類異常,如果不捕獲這類異常,程序?qū)⒉荒鼙痪幾g。 
運行期異常------這意味著程序存在bug,如數(shù)組越界,0被除,入?yún)⒉粷M足規(guī)范.....這類異常需要更改程序來避免,JAVA編譯器強制要求處理這類異常。 
錯誤------一般很少見,也很難通過程序解決。它可能源于程序的bug,但一般更可能源于環(huán)境問題,如內(nèi)存耗盡。錯誤在程序中無須處理,而有運行環(huán)境處理。 
如何處理異常? 
    1.try...catch 
    程序運行產(chǎn)生異常時,將從異常發(fā)生點中斷程序并向外拋出異常信息。

int x = (int)(Math.random()*5);
int y = (int)(Math.random()*10);
int[] z =new int[5];
try
{
    System.out.println("y/x="+(y/x));
    System.out.println("y="+y+"z[y]="+z[y]);
}
catch (ArithmeticException exc1)
{
    System.out.println("算術(shù)運算異常:"+exc1.getMessage());
}
catch (ArrayIndexOutOfBoundsException exc2)
{
    System.out.println("數(shù)據(jù)越界異常:"+exc2.getMessage());
}

    說明:ArithmeticException和ArrayIndexOutOfBoundsException都屬運行期異常:java.lang.RuntimeException,如果不用try...catch捕獲,程序也是可通過編譯的,但如果屬于檢查性異常:java.lang.Exception,必須而且一定要用try...catch...對其進行處理。 
    2.finally 
    如果把finally塊置try...catch...語句后,finally塊一般都會得到執(zhí)行,它相當于一個萬能的保險,即使前面的try塊發(fā)生異常,而又沒有對應(yīng)異常的catch塊,finally塊將馬上執(zhí)行。 
以下情形,finally塊將不會被執(zhí)行: 
(1)finally塊中發(fā)生了異常; 
(2)程序所在線程死亡; 
(3)在前面的代碼中用了System.exit(); 
(4)關(guān)閉CPU。 
    3.多個異常的處理規(guī)則: 
    定義多個catch可精確地定位異常。如果為子類的異常定義了特殊的catch塊,而父類的異常則放在另外一個catch塊中,此時,必須滿足以下規(guī)則:子類異常的處理塊必須在父類異常處理塊的前面,否則會發(fā)生編譯錯誤。所以,越特殊的異常越在前面處理,越普遍的異常越在后面處理。這類似于制訂防火墻的規(guī)則次序:較特殊的規(guī)則在前,較普通的規(guī)則在后。 
    自己也可以定義并拋出異常,方法是2步:創(chuàng)建異常,拋出異常(首先實例化一個異常對象,然后用thow拋出)合在一起就是---- 
thow new IOException("異常說明信息")。將創(chuàng)建異常,拋出異常合在一起的好處是:創(chuàng)建異常時,會包含異常創(chuàng)建處的行信息,異常被捕獲時可以通過堆棧跡(stack Trace)的形式報告這些信息。如果在同一行代碼創(chuàng)建和拋出異常,對于程序的調(diào)試將非常有用。 
所以,thow new XXX()已經(jīng)成為一個標準的異常拋出范式。 
    在定義一個方法時,方法塊中調(diào)用的方法可能會拋出異常,可用上面的thow new XXX()處理,如果不處理,那么必須在方法定義時,用thows聲明這個方法會拋出的異常。 
    對異常的處理,有一條行之有效的默認規(guī)則:向上拋出-----被調(diào)用類在運行過程中對遇到的異常一概不作處理,而是直接向上拋出,一直到最上層的調(diào)用類,調(diào)用類根據(jù)應(yīng)用系統(tǒng)的需求和特定的異常處理規(guī)則進行處理,如向控制臺輸出異常堆棧信息,打印在日志文件中。用一句形象的話來說,就是誰使用,誰(最上層的調(diào)用類)處理。 

分享:解讀Struts+Spring+Hibernate基礎(chǔ)教程
本文介紹Jsp的SSH企業(yè)級開發(fā)模式 Struts+Spring+Hibernate基礎(chǔ)教程 ,即前端使用StrutsMVC框架,中間層采用spring,后臺采用Hibernate。 主要包含以下內(nèi)容: ·配置Hibernate和事務(wù) ·裝載Spring的applicationContext.xml文件 ·建立業(yè)務(wù)層和DAO之間的依賴關(guān)

來源:模板無憂//所屬分類:JSP教程/更新時間:2010-02-23
相關(guān)JSP教程