上机7 java异常处理,Java之异常处理【7】

异常:程序运行期(执行期)出现的错误【不是语法错误】,是java提供的一种用于处理程序错误的机制。如:除0溢出,数组下标溢出、读文件不存在。

Java程序执行过程中如出现异常事件,系统自动的生成异常类对象,封装了异常事件的信息并被提交给Java运行时系统,成为‘’抛异常‘’。

当Java运行时系统收到异常时,会寻找能处理这一异常的代码,并把当前异常交给其处理,称为“捕获异常”。

一、异常分类图

7cb5a230c24110879381e54fbbfd2035.png

Throwable:父类  Error和Exception是两个子类。其中Error指系统异常,比如虚拟机异常,不需要处理。Exception又分为两种,其中Runtime Exception指经常出现的,比如除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是异常对象,当检测到异常的时候会系统自动初始化,交给Catch的代码处理

System.out.println("系统正在维护。。。。");

e.printStackTrace();}//用来跟踪异常事件发生时执行堆栈的内容

}}

二、五个关键字

try:可能发生异常的语句

catch:捕获,并处理异常(printStackTrace()用来跟踪异常事件发生时执行堆栈的内容)

throw:方法内部抛异常

throws:声明方法异常

final:代码中无论是否有异常都会执行,清除资源

public void someMethod()throws someException{

if(somecondition)

throw new someException(“错误原因”);

}

try{

someMethod(); //someMethod()方法明确抛异常,所以调用时必须要catch

}

catch(someMethod e)

{

}

try{

}

catch(someException1 e1){

}

try{

}

catch(someException2 e2){

}

finally{

}

执行过程:1.e1->finally

2.e2->finally

3.无异常->finally

三、自定义异常类

步骤:

通过继承java.lang.Exception类声明自己的异常类

在方法适当的位置生成自定义异常的实例,并用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("人数不合法。。",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("操作结束!");

};

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是异常对象,当检测到异常的时候会系统自动初始化

System.out.println("系统正在维护。。。。");

e.printStackTrace();{}*/

}

结果:操作类型:1

操作结束!

Exception.MyException: 人数不合法。。

at Exception.TestException.regist(TestException.java:19)

at Exception.TestException.manger(TestException.java:24)

at Exception.TestException.main(TestException.java:34)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值