java 异常处理

来源:互联网 发布:网络安全法 个人信息 编辑:程序博客网 时间:2024/05/29 09:22

一 异常处理
Throwable(异常处理的父类)
1 Error ———————- 系统奔溃 数据库崩溃(与所写代码没关系)
2 Exception ——————–异常(与所写代码有关系)
RuntimeException——————运行时异常

出现异常 系统如何解决 (谁来解决)
main 解决的方式
1 main函数自己解决
2 把问题抛给上级去解决(谁调用了main 函数 谁去解决)
交给jvm虚拟机去解决
jvm虚拟机如何解决?给你报错
打印错误信息 错误发生在什么类的什么位置

我们下面来看看3个常见异常
1 角标越界异常

int[] array=new int[] {1,2,3,4,5};System.out.println(array[5]);

这里写图片描述

2算术异常

int i= 0;int z= 1;int y = z/i;System.out.println(y);

这里写图片描述

3空指针异常

int[] array=new int[] {1,2,3,4,5};array= null;System.out.println(array[0]);

这里写图片描述

二 解决异常方式
try —- catch —– finally —–
try 指测试这个异常
catch 指捕获这个异常
finall 指异常结束后做的事

捕获异常的流程
1 发生异常
2 根据发生的异常产生对应的异常对象
3 这个异常对象会返回给调用者
4 如果调用者处理了这个异常(添加try catch)
异常对象会跟catch进行匹配 匹配上执行catcch语句
程序会继续执行
5 如果调用者没有处理这个异常 默认交给jvm虚拟机处理
根据异常 打印错误信息

三 finally
finally(遗言)
记住 不管你异常有没有发生 有没有匹配到 都会执行

finally有什么作用?
可以关闭系统资源 避免资源的浪费
(例如 关闭输入流 和 关闭数据库)

思考
final finally finalize 有什么区别
雷锋和雷锋塔的区别 没什么联系 一点关系都没有
final 修饰属性 修饰方法
finally 中语句 一定会执行 (异常处理的语句)
finalize 基类Object类方法
所有java中对象都有这个方法
该方法中垃圾回收的时候 被系统自动调用
当一块内存空间 无人引用 这块内存就是垃圾

 try {         System.out.println(10/1);         return;     }     catch(ArithmeticException e) {         System.out.println("除0 了");     }     finally {        System.out.println("你看我执行了么");    }     System.out.println("我下面的语句");}

这里写图片描述

我们下面给个需求
1 创建一个人类 有name 和 age
2 要求 人类年龄赋值时 要在 0 -120 之间

class People{    private String  name;    private int age;    /**     *      */    public People() {        super();        // TODO Auto-generated constructor stub    }    /**     * @param name     * @param age     */    public People(String name, int age) {        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    //如果这个方法 要抛出异常 给调用者    //那么必须在方法的声明上 标示这个方法为异常方法    //throws Exception 标示是抛出什么异常    /**     * throws 和 throw 区别     * throws 抛出这个方法 可以抛出一个异常     * (在方法的申明出现)     * throw 抛出一个异常对象(在方法中出现)     *      * @param age     * @throws Exception     */    public void setAge(int age ) throws Exception {        //加个年龄时间        if (age>0 && age<120) {            this.age = age;        }        else {            //System.out.println("外星人");            //抛出一个异常 告诉他 你赋值的年龄不对            //throw  关键词 抛出一个异常对象            //创建一个异常对象 把这个异常对象抛出去            //抛给谁 谁用赋值抛给书            //Exception exception = new Exception("年龄非法");            //使用匿名对象抛出            //throw new Exception();            //使用自定义类处理异常            AgeOutOfBoundException exception = new AgeOutOfBoundException("年龄非法");            throw exception;        }    }    @Override    public String toString() {        return "People [name=" + name + ", age=" + age + "]";    }}//创建一个自定义的异常类(继承Exception)// 在创建异常类时 需要直观让人知道这是什么异常//所以类名 要 见名知意class AgeOutOfBoundException extends Exception{    /**     * 序列化时 需要的id     */    private static final long serialVersionUID = 1L;    //重写构造方法    public AgeOutOfBoundException() {        super();        // TODO Auto-generated constructor stub    }    public AgeOutOfBoundException(String message) {        super(message);        // TODO Auto-generated constructor stub    }}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新型建筑模板支撑 新型建筑模板支撑架 新型建筑模板支撑体系 支教 乡村支教 支教申请 支教的意义 乡村男支教 支教心得 中国支教网 支教小山村 支教网 大学生支教 支教工资 短期支教 新疆支教 山区支教 中华支教 乡村支教杨羽全章免费阅读 乡村支教杨羽 我做禽兽支教史 支教的那些日子 穷山沟支教玩小女生 千万不要去支教 支教需要什么条件 杨羽支教浴女村全文 我的支教生涯 乡村支教杨羽全章阅读 支教是什么意思 支教小山村秦天君 支教工资一般多少 乡村支教杨羽全章免费 村中支教那些年 林雨和老公支教免费阅读 面料支数 床单面料支数40还是60好 玫瑰支数代表的意思 玫瑰花支数的含义 手机支架 支架植入术 车载支架