美文网首页
异常处理

异常处理

作者: Finlay_Li | 来源:发表于2019-04-07 16:40 被阅读0次
  1. 什么是异常
    异常的发生不可避免,对于异常产生的结果我们可以正确处理,保证程序的正常运行

比如: 客户输入数据的时候(给出提示)
读取文件是否存在(告诉JVM在与不在该如何处理)
网络是否始终保持通畅等等(给出网络异常提示)

一旦发生异常,会在该代码处,生成一个异常对象,以堆栈式抛出,若不处理,程序将终止运行

  1. java程序执行分成2部分:编译 运行
    我们要处理的是Exception

  2. 异常的体系结构
    java.lang.Throwable:是所有错误和异常的父类

  • |--Error
    错误,一些严重的错误。如:内存溢出,系统错误等。我们在代码中
    不做处理
  • |--Exception
    异常,我们尽可能预知并处理的异常。
    |--编译时异常(受检异常 checked) : 编译时检查,编译不能通过。
    |--运行时异常(非受检异常 unchecked): 编译时未检出异常,但运行时一旦发生该异常,会在异常代码处生成一个异常对象,以堆栈式抛出
  1. 怎么处理异常

异常的处理:Java中异常的处理采用的是抓抛模型

  • “抓”:将上述抛出的异常对象进行捕获处理,如何抓?①try..catch. ②throws
  • “抛”:一旦某句代码发生异常,不论什么异常,会在该代码处生成一个异常对象,然后抛出。
    try{
        //可能发生异常的语句
        //同一个功能的语句
    }catch(异常的类型 变量名){
        //异常的处理
    } finally{
        //可选的,一定被执行的语句
    }

注意:
①catch 块可以有多个,由从上往下执行,一旦某个 catch 异常类型匹配成功,其他 catch 块将不再执行

②若 catch 块中的异常类型具有子父类关系,必须"子上父下",否则毫无意义。

③try-catch-finally 是可以嵌套的
④finally 可选的,一旦写上一定被执行,并优先于return执行。因为return结束方法,而finally一定要执行所以优先

6.抓

  • throws 关键字
    当不知道该如何处理时,把异常对象往上抛出,交给调用者做具体的处理,若调用者也不知道,又接着抛到main
    再抛就是JVM了,但是一直抛这个异常还是存在,必须在main使用期间try..catch处理完

  • 格式

public void show() throws FileNotFoundException, IOException{}
  • 两种处理方式的区别
    try..catch..根本处理异常
    throws 间接处理异常
  • throw 关键字
    制造异常对象,使用在方法体内,后面跟异常对象。

  • 制造运行时异常

            public int div(int a, int b){
                if(b == 0){
                    throw new RuntimeException("除数不能为零!");
                }
                return a / b;
            }
  • 制造编译时异常
            public int div(int a, int b) throws ArithmeticException{
                if(b == 0){
                    throw new Exception("除数不能为零!");
                }
                return a / b;
            }
  1. 【面试题】throw 和 throws 区别
    throws 是异常处理的一种方式,交给调用者做具体的处理
    throw 制造异常,手动制造可控的描述信息异常,再抛出

  2. 自定义异常

public class MyException extends RuntimeException{
    private static final long serialVersionUID = -7736287090372348682L;
    public MyException(){  
    }
    public MyException(String message){
        super(message);
    }
}

相关文章

网友评论

      本文标题:异常处理

      本文链接:https://www.haomeiwen.com/subject/eppsiqtx.html