?? java異常處理機制的詳解和使用技巧-java面向對象 - it電子教育門戶 高端java培訓.htm
字號:
?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0062)http://www.mldn.cn/articleview/2007-11-1/article_view_2609.htm -->
<HTML><HEAD><TITLE>Java異常處理機制的詳解和使用技巧/JAVA面向對象 - IT電子教育門戶 高端JAVA培訓</TITLE>
<STYLE type=text/css>BODY {
FONT-SIZE: 12px
}
TD {
FONT-SIZE: 12px
}
TH {
FONT-SIZE: 12px
}
.STYLE1 {
FONT-WEIGHT: bold; FONT-SIZE: 18px; COLOR: #003399
}
.STYLE2 {
FONT-SIZE: 14px
}
</STYLE>
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
<META content=g0IGIjwMtoTt4TksXOL7QykvujGWD7D0AoPDPWEsjRs= name=verify-v1>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META http-equiv=Content-Language content=zh-CN>
<META content=java培訓,mldn,JAVA教程,北京JAVA培訓,IT電子教育門戶,北京JAVA培訓,JAVA,異常處理
name=keywords>
<META
content=異常機制是指當程序出現錯誤后,程序如何處理。具體來說,異常機制提供了程序退出的安全通道。當出現錯誤后,程序執行的流程發生改變,程序的控制權轉移到異常處理器。&nbsp;
name=description>
<META content=all name=robots>
<META content=www.mldn.cn,所有版權 name=Copyright>
<STYLE type=text/css>BODY {
MARGIN: 0px
}
</STYLE>
<STYLE type=text/css>IMG {
BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
A:link {
TEXT-DECORATION: none
}
BODY {
FONT-SIZE: 12px
}
TD {
FONT-SIZE: 12px
}
TH {
FONT-SIZE: 12px
}
A:visited {
TEXT-DECORATION: none
}
A:hover {
TEXT-DECORATION: underline
}
A:active {
TEXT-DECORATION: none
}
.input {
BORDER-RIGHT: #acb4b7 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #9aa1a9 1px solid; PADDING-LEFT: 0px; FONT-SIZE: 14px; BACKGROUND-ATTACHMENT: fixed; BACKGROUND-IMAGE: url(image/search/input.gif); PADDING-BOTTOM: 5px; BORDER-LEFT: #9aa1a9 1px solid; WIDTH: 550px; PADDING-TOP: 5px; BORDER-BOTTOM: #acb4b7 1px solid; BACKGROUND-REPEAT: no-repeat; HEIGHT: 30px; TEXT-ALIGN: left
}
</STYLE>
</STYLE><!--系統js,必須調用-->
<SCRIPT src="Java異常處理機制的詳解和使用技巧-JAVA面向對象 - IT電子教育門戶 高端JAVA培訓.files/public.js"
type=text/javascript></SCRIPT>
<LINK title=rss href="http://www.mldn.cn/rssfeed.asp" type=application/rss+xml
rel=alternate></HEAD>
<BODY><!--頭部代碼結束-->
<TABLE cellSpacing=0 cellPadding=0 width=890 align=center border=0>
<TBODY>
<TR>
<TD width=274><A href="http://www.mldn.cn/"><IMG height=79 alt=MLDN
src="Java異常處理機制的詳解和使用技巧-JAVA面向對象 - IT電子教育門戶 高端JAVA培訓.files/logo.gif"
width=274 border=0></A></TD>
<TD width=616><IMG height=79
src="Java異常處理機制的詳解和使用技巧-JAVA面向對象 - IT電子教育門戶 高端JAVA培訓.files/main_r1_c2.gif"
width=616 useMap=#Map border=0></TD></TR></TBODY></TABLE><MAP name=Map><AREA
shape=RECT coords=8,22,45,49 href="http://www.mldn.cn/"><AREA shape=RECT
coords=53,22,113,50
href="http://www.mldn.cn/articlelist/article_3_adddate_desc_1.htm"><AREA
shape=RECT coords=116,20,177,51
href="http://www.mldn.cn/articlelist/article_4_adddate_desc_1.htm"><AREA
shape=RECT alt=java培訓 coords=181,21,242,51
href="http://www.mldn.cn/articlelist/article_58_adddate_desc_1.htm"><AREA
shape=RECT coords=245,21,307,52 href="http://www.mldnjava.cn/"><AREA
shape=RECT coords=309,21,374,51 href="http://www.zhinangtuan.net.cn/"><AREA
shape=RECT target=_blank coords=376,21,439,50
href="http://www.mldnjava.cn/java/index.htm"></MAP>
<SCRIPT language=javascript></SCRIPT>
<TABLE cellSpacing=0 cellPadding=0 width=890 align=center border=0>
<TBODY>
<TR>
<TD><A href="http://www.mldnjava.cn/java/" target=blank><IMG height=150
alt=遠程JAVA培訓
src="Java異常處理機制的詳解和使用技巧-JAVA面向對象 - IT電子教育門戶 高端JAVA培訓.files/index_banner.jpg"
width=890></A></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=890 align=center bgColor=#f1f1f1
border=0>
<TBODY>
<TR>
<TD vAlign=top width=670>
<TABLE cellSpacing=1 cellPadding=0 width="99%" align=center
bgColor=#cccccc border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff>
<TABLE cellSpacing=0 cellPadding=0 width="98%" align=center
border=0>
<TBODY>
<TR>
<TD bgColor=#e4e4e4 colSpan=2><A
href="http://www.mldn.cn/"><B>IT電子教育門戶 高端JAVA培訓</B></A> -=>
<A
href="http://www.mldn.cn/articlelist/article_4_adddate_desc_1.htm"><B>資源中心</B></A>
-=> <A
href="http://www.mldn.cn/articlelist/article_11_adddate_desc_1.htm"><B>JAVA
SE技術專區</B></A> -=> <A
href="http://www.mldn.cn/articlelist/article_18_adddate_desc_1.htm"><B>JAVA面向對象</B></A>
-=> 正文</TD></TR>
<TR>
<TD align=middle colSpan=2 height=40>
<H1>Java異常處理機制的詳解和使用技巧</H1></TD></TR>
<TR align=middle>
<TD colSpan=2 height=40>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-8263014661871932";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-02-14: 新聞內容頁面上面
google_ad_channel = "8423241514";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "333333";
google_color_text = "333333";
google_color_url = "003366";
//--></SCRIPT>
<SCRIPT
src="Java異常處理機制的詳解和使用技巧-JAVA面向對象 - IT電子教育門戶 高端JAVA培訓.files/show_ads.js"
type=text/javascript>
</SCRIPT>
</TD></TR>
<TR>
<TD colSpan=2 height=40> 發布日期:2007-11-1
9:54:00 發布者:[<A
href="http://www.mldn.cn/florilegium.jtml?a_name=IT電子教育門戶&a_id=0"
rel=external>IT電子教育門戶</A>] 評論:[
<SCRIPT
src="Java異常處理機制的詳解和使用技巧-JAVA面向對象 - IT電子教育門戶 高端JAVA培訓.files/error.htm"
type=text/javascript></SCRIPT>
] 瀏覽:
<SCRIPT
src="C:\Documents and Settings\elibuser\桌面\面向對象學習文檔\Java異常處理機制的詳解和使用技巧-JAVA面向對象 - IT電子教育門戶 高端JAVA培訓.files\error(1).htm"
type=text/javascript></SCRIPT>
</TD></TR>
<TR>
<TD colSpan=2><SPAN class=STYLE2>
<DIV id=article><FONT face="Times New Roman">1. 異常機制 <BR>1.1
<BR>異常機制是指當程序出現錯誤后,程序如何處理。具體來說,異常機制提供了程序退出的安全通道。當出現錯誤后,程序執行的流程發生改變,程序的控制權轉移到異常處理器。
<BR>1.2
<BR>傳統的處理異常的辦法是,函數返回一個特殊的結果來表示出現異常(通常這個特殊結果是大家約定俗稱的),調用該函數的程序負責檢查并分析函數返回的結果。這樣做有如下的弊端:例如函數返回-1代表出現異常,但是如果函數確實要返回-1這個正確的值時就會出現混淆;可讀性降低,將程序代碼與處理異常的代碼混爹在一起;由調用函數的程序來分析錯誤,這就要求客戶程序員對庫函數有很深的了解。
<BR>1.3 異常處理的流程 <BR>1.3.1 遇到錯誤,方法立即結束,并不返回一個值;同時,拋出一個異常對象
<BR>1.3.2 調用該方法的程序也不會繼續執行下去,而是搜索一個可以處理該異常的異常處理器,并執行其中的代碼 <BR>2
異常的分類 <BR>2.1 異常的分類 <BR>2.1.1
<BR>異常的繼承結構:基類為Throwable,Error和Exception繼承Throwable,RuntimeException和IOException等繼承Exception,具體的RuntimeException繼承RuntimeException。
<BR>2.1.2
<BR>Error和RuntimeException及其子類成為未檢查異常(unchecked),其它異常成為已檢查異常(checked)。
<BR>2.2 每個類型的異常的特點 <BR>2.2.1 Error體系
<BR>Error類體系描述了Java運行系統中的內部錯誤以及資源耗盡的情形。應用程序不應該拋出這種類型的對象(一般是由虛擬機拋出)。如果出現這種錯誤,除了盡力使程序安全退出外,在其他方面是無能為力的。所以,在進行程序設計時,應該更關注Exception體系。
<BR>2.2.2 Exception體系
<BR>Exception體系包括RuntimeException體系和其他非RuntimeException的體系
<BR>2.2.2.1 RuntimeException
<BR>RuntimeException體系包括錯誤的類型轉換、數組越界訪問和試圖訪問空指針等等。處理RuntimeException的原則是:如果出現RuntimeException,那么一定是程序員的錯誤。例如,可以通過檢查數組下標和數組邊界來避免數組越界訪問異常。
<BR>2.2.2.2 其他(IOException等等)
<BR>這類異常一般是外部錯誤,例如試圖從文件尾后讀取數據等,這并不是程序本身的錯誤,而是在應用環境中出現的外部錯誤。
<BR>2.3 與C++異常分類的不同 <BR>2.3.1
<BR>其實,Java中RuntimeException這個類名起的并不恰當,因為任何異常都是運行時出現的。(在編譯時出現的錯誤并不是異常,換句話說,異常就是為了解決程序運行時出現的的錯誤)。
<BR>2.3.2
<BR>C++中logic_error與Java中的RuntimeException是等價的,而runtime_error與Java中非RuntimeException類型的異常是等價的。
<BR>3 異常的使用方法 <BR>3.1 聲明方法拋出異常 <BR>3.1.1 語法:throws(略)
<BR>3.1.2 為什么要聲明方法拋出異常?
<BR>方法是否拋出異常與方法返回值的類型一樣重要。假設方法拋出異常確沒有聲明該方法將拋出異常,那么客戶程序員可以調用這個方法而且不用編寫處理異常的代碼。那么,一旦出現異常,那么這個異常就沒有合適的異常控制器來解決。
<BR>3.1.3 為什么拋出的異常一定是已檢查異常?
<BR>RuntimeException與Error可以在任何代碼中產生,它們不需要由程序員顯示的拋出,一旦出現錯誤,那么相應的異常會被自動拋出。而已檢查異常是由程序員拋出的,這分為兩種情況:客戶程序員調用會拋出異常的庫函數(庫函數的異常由庫程序員拋出);客戶程序員自己使用throw語句拋出異常。遇到Error,程序員一般是無能為力的;遇到RuntimeException,那么一定是程序存在邏輯錯誤,要對程序進行修改(相當于調試的一種方法);只有已檢查異常才是程序員所關心的,程序應該且僅應該拋出或處理已檢查異常。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -