Exception异常深度解析

作为一个java学习者,深刻理解异常对我们造成的困扰,有些东西,你不弄透,会一直缠着你,一定要花一些时间,彻底弄通,这样以后就不用再怕了

异常
一.java调试时出现和错误和异常分为error和Exception两种:
error 表示恢复很困难的情况下的一种严重问题,程序员无法处理。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。它表示如果程序运行正常,从不会发生的情况,这是程序员可以处理的异常。

二.接下来主要讲解异常的运行机制:
(1)异常主要分为运行时异常(RuntimeException )与非运行时异常
两者的区别:
1. 运行时异常称之为:非检查异常; 非运行时异常称之为:检查异常
2. 运行时异常即只有运行才会报异常,如10/0,但 非运行时异常是编译之后必须用try..catch抛出异常才可正常运行
3.运行时异常不要求异常链的其他类进行处理,即只需要在最后一层进行处理抛出的异常就可以,节约了代码;而非 运行时异常要求各个环节必须要处理,只要涉及到异常的环节必须要处理异常,这就会造成代码的不整洁和冗余

(2) java是如何为我们处理异常的呢?— — 主要通过五大关键字
try:将程序中有可能出现问题的代码放在这
catch:一旦程序出现异常立即进入相应的catch模块
finally:不论程序是否出现异常都会执行(多用于释放资源)
throw:立即抛出异常,单行使用,多用户自定义异常
throws:方法声明抛出多个异常,多在方法的()后面,可接多个异常

(3)异常的运行机制
    Java程序一旦出现异常,jvm(java虚拟机)就会立刻new一个类的对象出来,jvm会自动的把这个异常的相关信息保存  到这个异常类的对象中去。
    比如:10/0 这个操作之后 就会惊动jvm,jvm就会创建一个arithmeticException这个对象的类出来,你刚才所有的操作都会记录在这个对象中,  e.getStackTrace可以将错误信息打印出来便于查看

这里写图片描述

(4)对于一些系统没有定义的异常,但是不满足业务需求的条件,我们想要让系统认为他是异常,比如,年龄低于18岁的人不能办理身份证,那就只能自己定义一个异常,继承自runtimeException,
     public class StuAgeException extends RuntimeException {
        public StuAgeException(String string) {}//空构造
    }
注意:RuntimeException没有规定每个都要处理异常,但Exception规定管理者必须处理异常,即每一个涉及到异常的都必须处理,所以使用RuntimeException只需在需要的部门进行处理即可,使代码更加整洁

这里写图片描述

(5) 异常处理的原则
本环节处理不了的异常必须抛!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值