java异常处理

总:一个图,五个关键字(try,catch,finally,throws,throw)

throw:

一:异常的概念

1:java的异常是java提供的用于处理错误的一种机制。

2:所谓错误是指在程序运行的过程中发生的一些异常事件(除0溢出,数组下标越界,要读取的文件不存在)。

3:java运行时系统接收到异常对象时,会找能处理这一异常对的戴拿并把当前异常对象交给他处理,这一过程成为捕获异常。

 

二:java异常的分类

Error是系统错误,处理不了,Exception子类是必须要显示处理的异常,必须try catch逮,RuntimeException下面的异常可以不用显式捕获异常,例如(ArrayIndexOutOfBoundsException)数组下标越界,我们没有在程序中开始try catch,主要是如果这种异常也要逮的话,程序的运行效率大大降低。

try可能会跟着多个catch(先抓小的异常,再抓大的,并列无所谓),但是finally是用来兜底的,无论如何都会被执行,为异常处理提供一个统一的接口,进行资源的清除工作。

java 程序中出现异常而不去catch,出现异常之后的代码是运行不到的,导致程序终止,具体解释如下:

RuntimeException也是一样的.RuntimeException是一种可以编绎通过的异常,但运行还是不能通过的,如果不想程序终止,也要去try catch它. 除0异常就是一种RuntimeException,你可以在自己机子上试下.

而非RuntimeException的Exception如果不try catch它,则必须要throws出去.否则编绎都无法通过.当然如果你仅仅是throws出去,在发生异常之后的代码还是会运行不到的.

三:如果处理不了,直接往外抛利用throw.如果能处理即处理,处理不了就往外抛。调用别人的方法就是这样,如果别人的方法抛异常,自己处理运用try catch ,如果不处理自己也throw。在main方法中throw相当不好习惯。

四:使用自定义的异常

public class Exception1 {

 

public void regist(int num)throws MyException{

if(num<1)

throw new MyException("人数为负,不合理",3);

}

public void manager(int num){

try{

regist(num);

}catch(MyException e){

System.out.println("登记失败,出错类型码为:"+e.getId());

e.printStackTrace();

//e.getMessage();

}

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

Exception1 ex = new Exception1();

ex.manager(0);

}

 

子类重写的方法抛出的异常不能比父类方法抛出对的异常更宽泛,因为多态使用时(父类的引用指向子类对象),我们捕捉的是父类对的异常,执行的是子类的方法,如果子类抛出的异常更宽泛我们在捕捉异常处会出现问题。

 

}

 

class MyException extends Exception{

private int id;

String message;

public MyException(String message,int id){

this.message = message;

this.id = id;

}

public int getId(){

return id;

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值