ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022-07-30 第二小组 张晟源(异常)

2022-07-30 09:00:13  阅读:37  来源: 互联网

标签:Exception 07 自定义 30 张晟源 try catch 异常 throws


JAVA(异常)

异常的体系结构

  最顶级的Throwable:错误,异常

  Error:正常情况下,不太可能出现,绝大多数Error都会导致程序处于一个非正常的状态下, 基本上很难恢复。在外力的作用下,不考虑。Error是Throwable的子类,它是在Java 程序处理范围之外的

  Exception:在Java语言中,将程序执行中发生的不正常的情况称之为异常。Exception也是 Throwable的子类。

  编译期异常:写代码的时候,抛异常。如果编译器不解决,会编译不通过

  运行期异常:RuntimeException,运行时会抛异常,平时没事

自定义异常:

Java中异常机制虽然很完善,但是结合实际业务还差很多。

年龄出现负数需要自定义异常、电商搜索乱码需要自定义异常

怎么自定义异常?

  1. 所有的异常必须是Throwable的子类
  2. 如果要定义一个编译期异常,需要继承Exception类
  3. 如果要定义一个运行期异常,需要继承RuntimeException类

 

异常链

一个异常被抛出去之后会继续被调用这个方法的方法捕获或抛出,异常会扩散

只要说解决异常、处理异常、捕获异常就是try ... catch

 

throws

如果一个方法没有捕获一个编译期异常,该方法必须使用throws来声明

1.在方法里直接try ... catch解决

public void info(){
    try{
         show();   
    }catch (MyException e){
        e.printStackTrace();   
    }
}

2.在方法里抛异常给主函数,在主函数里try ... catch解决

public void show() throws Exception{
}
//JVM
public static void main(String[] args){
    try{
         new Ch01().info();
    } catch (Exception e){
         e.printStackTrace();   
    }
}

规定:主方法里不允许继续往下抛异常

throws并不是真正的解决了异常,只是把异常抛给了下一级调用者。

 

throw和throws的区别

throws出现在方法的声明处,可以抛出多个异常(用逗号隔开)

 

finally关键字:

  • finally用来创建在try代码块后面执行的代码块
  • 无论是否发生异常,finally代码块中的代码一定会执行。一班finally中的代码都是用来释放资源的。
  • Finally无论是否出现异常,都会执行

 

补充

catch可以写多个异常(可以捕获多个异常)

重写的另一个规则:重写的方法不能抛出比被重写方法更大的异常类型

 

标签:Exception,07,自定义,30,张晟源,try,catch,异常,throws
来源: https://www.cnblogs.com/shenmimao/p/16534298.html

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有