上机7 java异常处理,Java之异常处理【7】
異常:程序運行期(執(zhí)行期)出現(xiàn)的錯誤【不是語法錯誤】,是java提供的一種用于處理程序錯誤的機制。如:除0溢出,數(shù)組下標溢出、讀文件不存在。
Java程序執(zhí)行過程中如出現(xiàn)異常事件,系統(tǒng)自動的生成異常類對象,封裝了異常事件的信息并被提交給Java運行時系統(tǒng),成為‘’拋異常‘’。
當Java運行時系統(tǒng)收到異常時,會尋找能處理這一異常的代碼,并把當前異常交給其處理,稱為“捕獲異常”。
一、異常分類圖
Throwable:父類? Error和Exception是兩個子類。其中Error指系統(tǒng)異常,比如虛擬機異常,不需要處理。Exception又分為兩種,其中Runtime Exception指經(jīng)常出現(xiàn)的,比如除0溢出等,可以捕獲也可以不捕獲。其他的就要求必須要捕獲,常見的在jdk中看到方法后面跟了throws就必須catch.
public class TestException{
public static void main(String args[]){
int a[]={3,2,5};
//捕獲異常
try{
System.out.println(a[3]);}
catch(ArrayIndexOutOfBoundsException e){//e是異常對象,當檢測到異常的時候會系統(tǒng)自動初始化,交給Catch的代碼處理
System.out.println("系統(tǒng)正在維護。。。。");
e.printStackTrace();}//用來跟蹤異常事件發(fā)生時執(zhí)行堆棧的內(nèi)容
}}
二、五個關(guān)鍵字
try:可能發(fā)生異常的語句
catch:捕獲,并處理異常(printStackTrace()用來跟蹤異常事件發(fā)生時執(zhí)行堆棧的內(nèi)容)
throw:方法內(nèi)部拋異常
throws:聲明方法異常
final:代碼中無論是否有異常都會執(zhí)行,清除資源
public void someMethod()throws someException{
if(somecondition)
throw new someException(“錯誤原因”);
}
try{
someMethod(); //someMethod()方法明確拋異常,所以調(diào)用時必須要catch
}
catch(someMethod e)
{
}
try{
}
catch(someException1 e1){
}
try{
}
catch(someException2 e2){
}
finally{
}
執(zhí)行過程:1.e1->finally
2.e2->finally
3.無異常->finally
三、自定義異常類
步驟:
通過繼承java.lang.Exception類聲明自己的異常類
在方法適當?shù)奈恢蒙勺远x異常的實例,并用throw語句拋出
在方法的聲明部分用throws語句聲明該方法可能拋出的異常
package Exception;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
class MyException extends Exception{
private int id;
private String message;
public MyException(String message,int id){
super(message);
this.id=id;
}
public int getID(){
return id;}
}
public class TestException {
public void regist(int i) throws MyException{
if(i<0)
throw new MyException("人數(shù)不合法。。",1);
else
System.out.println("num:"+i);
}
public void manger(){
try{regist(-50);}//regist()方法拋異常了,因此必須捕獲
catch(MyException e){
System.out.println("操作類型:"+e.getID());
e.printStackTrace();
}
System.out.println("操作結(jié)束!");
};
public static void main(String args[])
{
TestException test=new TestException();
test.manger();
}
/*int a[]={3,2,5};
try{
System.out.println(a[3]);}
catch(ArrayIndexOutOfBoundsException e){//e是異常對象,當檢測到異常的時候會系統(tǒng)自動初始化
System.out.println("系統(tǒng)正在維護。。。。");
e.printStackTrace();{}*/
}
結(jié)果:操作類型:1
操作結(jié)束!
Exception.MyException: 人數(shù)不合法。。
at Exception.TestException.regist(TestException.java:19)
at Exception.TestException.manger(TestException.java:24)
at Exception.TestException.main(TestException.java:34)
總結(jié)
以上是生活随笔為你收集整理的上机7 java异常处理,Java之异常处理【7】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兄弟你瘦了是哪首歌啊?
- 下一篇: php获取表字段,使用 php 获取表的