Java异常处理(个人理解)

      异常的顶级父类:Java.lang.Thro 从顶级父类中又分为两类一种是 Error:是指Java虚拟机无法解决的严重问题,比如jvm系统内部错误、资源耗尽等情况。无法通过针对性的代码来进行处理。另一种就是Exception:是因编程错误或者是偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。而Exception又分为编译时异常和运行时异常。编译时异常:一般是系统为了预防一些可能发生的错误( 比如在IO中读取的文件不存在等)。运行时异常:是系统不可以预测的异常,也就是程序存在的bug。

        运行时异常比较常见一般我们不需要进行try-cath 或者是throw来进行处理。

编译时异常的处理方式

       第一种方式: Try -catch-finally : 出现异常,在自己的代码中进行处理

try{
可能出现的代码
}cath(异常类型1 变量名){
    异常处理的方式
}cath(异常类型2  变量名){
    异常处理的方式
}
。。。。。。。
finally{((可选择 	
)
   //一定会执行的代码
}

       在try -catch-finally结构中,cath中的异常类型需要保持异常类型1的范围要比异常类型2的范围小,不然会报错 。try -catch-finally结构中的finally中的内容是一定被执行的,通常在里面进行关闭线程以及IO流。

      异常 处理的第二种方式:

       通过Throws来进行抛出可能存在的异常。抛出异常是指程序在执行过程中,一但出现异常,就会生成一个异常类的对象并将这个对象进行抛出,一旦抛出对象后后面的对象就不会在执行了。

    Throws +异常类型    方法一旦出现了错误,就会向方法的调用者抛出异常,如果方法的调用者还是选择抛出异常的话,那么这个异常对象还会向上一级进行抛出,知道抛出到main,如果此时还不进行处理的话就会把异常抛给虚拟机,一旦虚拟机无法处理,虚拟机就会瘫痪。

使用异常需要注意的点:

  1. 如果父类中被重写的方法没有使用throws来抛异常,那么子类的重写的方法也不能进行throws异常,如果子类重写的方法必须要进行异常处理的话必须使用try -catch结构进行处理。
  2. 子类重写父类的方法中throws的异常类型范围必须小于等于父类throws的异常类型范围。

用户自定义异常类:

    第一步:继承与现有的异常结构。需要什么异常就继承什么异常结构

    第二步:提供一个全局常量:serialVersionUID  ,可以看成自定义异常类的唯一标识。

    第三步: 提供重载的构造器,也是需要 那个构造器就使用那个构造器


public class MyException  extends   RuntimeException {
    static final long serialVersionUID = -7034845766939L;
    public  MyException(){
    }
    public MyException(String msg){
        super(msg);
    }
}

class shiyan{
private  int id;

public  void   regis(int  id){
    if(id>0){
       this.id=id;
    }
    else{
        throw new MyException("输入了复数");
    }
   }
}

class   mainTest{
    public static void main(String[] args) {
        shiyan shiyan = new shiyan();
        shiyan.regis(-1);
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值