程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java異常處理,java異常處理機制

Java異常處理,java異常處理機制

編輯:JAVA綜合教程

Java異常處理,java異常處理機制


一java異常分類

Java異常:
(1)Error:java虛擬機無法解決的嚴重問題
(2)Exception:空指針異常 訪問不存在的文件 網絡連接中斷
Error和Exception都繼承子java.lang.throwable
Error類型:
1.java.lang.StackOverflowError
public class TestError {
public static void main(String[] args) {
main(args);
}
}
2.java.lang.OutOfMemoryError
public static void main(String[] args) {
byte[] b=new byte[10241024600];
}
Exception:
//常見的運行時異常
//1.數組下標異常java.lang.ArrayIndexOutOfBoundsException: 10
@Test
public void test(){
int []i=new int [10];
System.out.println(i[10]);

}
//2.算數異常:arithmeticException
@Test
public void test2(){
int i=10;
System.out.println(i/0);
}
//3.類型轉換異常:java.lang.ClassCastException: java.util.Date cannot be cast to
java.lang.String
@Test
public void test3(){
Object obj=new Date();
String str=(String)obj;
}
//4.空指針異常java.lang.NullPointerException
@Test
public void test4(){
Object s=new String("abc");
s=null;
System.out.println(s.toString());

}
//5.編譯時運行
@Test
public void test5() throws Exception{
FileInputStream fis=new FileInputStream(new File
("Hello.txt"));
int b;
while((b=fis.read())!=-1)
{
System.out.println((char)b);
}
}
二.如何處理Exception異常
java提供異常的抓拋模型
第一步:
"拋":當我們執行代碼時,一旦出現異常,就會在異常的代碼處生成一個對應的異常類對象
,並將此對象拋出(自動拋出,手動拋出)
>一旦拋出次異常類的對象,那麼程序將終止執行
>此異常類的對象拋出給方法的調用者
2."抓":抓住上一步拋出來的異常類的對象,如何抓即為異常處理的方式
提供兩種方式用於處理異常類的對象
>處理方式一:
try{
//可能出現異常的代碼
}
catch(Exception ex){
}
catch(Exception ex2){
}
finally{
}
注:
1.try內聲明的變量,類似於局部變量,除了try語句,就不能被調用
2.finally語句是可選的
3.catch語句內部是對異常對象的處理
有兩個可用的方法: getMessage() printStackTrace();
4.可以有多個catch語句,try中拋出的異常類對象從上往下匹配catch中的異常的類型,一旦滿
足,就執行catch語句中的代碼,執行完後,跳出其後的多條catch語句
5.如果異常處理了,那麼其後的代碼繼續執行
6.若catch中多個異常類型是"並列"關系,順序都可以;
如果為包含關系,那麼子類在上面
7.finally語句中一定會被執行,不管try中,catch中語句是否有異常或者return語句
8.try catch是可以相互嵌套的
>處理方式二:
在方法聲明中用throws語句聲明拋出異常的列表,throws聲明的異常類型可以是方法中產生的異
常 類型,也可以是它的父類
格式:public static void method2() throws IOException
當在方法內部出現異常的時候,會拋出一個異常的對象給方法的調用者
異常的對象可以逐層向上拋,直至main中,當然在向上拋的過程中可以再通過try-catch進行處

三.對於運行時異常,可以不顯式的進行處理
對於編譯時異常,必須要進行處理
總結:java的異常處理采用 抓拋 模型
1.抓:異常的處理,有兩種方式(try-catch-finally throws+異常類型)
2.拋:一旦執行過程中,出現異常,會拋出一個異常類的對象(自動拋出 手動拋出:throw+異常
項 )
>異常類既可以是現成的異常類,也可以是自己創建的

四.
如何自定義異常類:
//1.讓自定義的異常類繼承現有的異常類
public class MyException extends RuntimeException {
//2.提供一個序列號,提供幾個重載的構造器
static final long serialVersionUID = -7034897190745766939L;
public MyException(){

}
public MyException(String msg){
super(msg);
}
}
子類重寫父類的方法,其拋出的異常類型只能是被重寫的方法的異常類的子類或者異常類。即子類
拋出的異常范圍要小於父類。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved