异常

1.异常就是程序出现了不正常的情,最终会导致JVM的非正常停止.(注意:语法错误不算在异常体系中).
2.异常体系
Throwable: Error和Exception
Error:严重问题,无法通过代码解决 (如:内存溢出)
Exception:RuntimeException及其子类 和 除RuntimeException之外所有的异常
)
RuntimeException :运行时异常(在编译成class文件不需要处理,在运行字节码文件时可能出现的异常,也称为受检异常.
都是Exception类及其子类无需显示处理,也可以和编译时异常一样处理

除RuntimeException之外所有的异常: 编译期异常(在编译成class文件时必须要处理的异常,也称为受检异常)
都是RuntimeException类及其子类,必须显示处理,否则程序就会发生错误,无法通过编译

2.JVM默认处理异常的方式
如果程序出现了问题,我们没有做任何处理,最终JVM 会做默认的处理,处理方式有两个步骤: 1把异常的名称,错误原因及异常出现的位置等信息输出在了控制台;2程序停止运行
查看异常信息:
控制台在打印异常信息时,会打印异常类名,异常出现的原因,异常出现的位置我们调bug时,可以根据提示,找到异常出现的位置,分析原因,修改异常代码.

3.throws方式处理异常
格式:public void 方法() throws 异常类名 {}
写在方法的声明处:告诉调用者,如果调用,有可能会出现此类的异常.
如果方法中没有出现异常,就正常执行;
如果方法中处真的出现了异常,也是将这个异常交给了调用者处理
如果调用者没有处理,交给JVM虚拟机处理.
异常处理方式:
自己不处理:谁调用谁处理throws
自己处理:try…catch
注意事项:
这个throws格式是跟在方法的括号后面的;
编译时异常必须要进行处理,两种处理方案:try…catch …或者 throws,如果采用 throws 这种方案,在方法上进行显示声明,将来谁调用这个方法谁处理;
运行时异常因为在运行时才会发生,所以在方法后面可以不写,运行时出现异常默认交给jvm处理;

4.throw抛出异常
格式:throw new 异常();
注意:这个格式是在方法内的,表示当前代码手动抛出一个异常,下面的代码不用再执行了;
throws和throw的区别
throws:用在方法声明后面,跟的是异常类名;
表示声明异常,调用该方法有可能会出现这样的异常
throw:用在方法体内,跟的是异常对象名;
表示手动抛出异常对象,由方法体内的语句处理

  1. try-catch方式处理异常
    格式: try {
    可能出现异常的代码;
    } catch(异常类名 变量名) {
    异常的处理代码;
    }
    执行流程:
    程序从 try 里面的代码开始执行;
    出现异常,就会跳转到对应的 catch 里面去执行;
    执行完毕之后,程序还可以继续往下执行.

    注意:
    如果 try 中没有遇到问题,怎么执行?会把try中所有的代码全部执行完毕,不会执行catch里面的代码;
    如果 try 中遇到了问题,那么 try 下面的代码还会执行吗?那么直接跳转到对应的catch语句中,try下面的代码就不会再执行了
    当catch里面的语句全部执行完毕,表示整个体系全部执行完全,继续执行下面的代码;
    如果出现的问题没有被捕获,那么程序如何运行?那么try…catch就相当于没有写.那么也就是自己没有处理.
    默认交给虚拟机处理;
    同时有可能出现多个异常怎么处理?出现多个异常,那么就写多个catch就可以了.
    注意:如果多个异常之间存在子父类关系.那么父类一定要写在下面.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值