栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

异常概念&异常体系

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

异常概念&异常体系

异常

指的是程序在执行过程中,出现的非正常的情况,最终会导致jvm的非正常停止

在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象,Java处理异常的方式是中断处理

异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行。

异常体系

 

异常分类

一种是运行期异常 运行期异常 我们无需处理

一种是捕捉异常 thow关键字我们可以在指定的方法里面抛出指定的异常

Java处理异常的五个关键字:try-catch、finally、throw、throws Objects非空判断_requireNonNul
package cn.itcast.day12.demo04;

import java.util.Objects;



public class Demo02 {
    public static void main(String[] args) {
        method(null);
    }

    public static void method(Object obj){
        //对传递过来的参数进行一个合法性的校验
      
            //Exception in thread "main" java.lang.NullPointerException
        Objects.requireNonNull(obj,"传递的对象的值是null");  // Exception in thread "main" java.lang.NullPointerException: 传递的对象的值是null
    }
}
_throws关键字_异常处理的第一种方式

throws 和 try-catch的区别就是
throws发生异常的时候中断程序后续代码不在执行
而try-catch对异常进行捕获,捕获到Catch里面,后续代码继续执行

 

Throwable类中3个异常处理的方法
package cn.itcast.day12.demo04;

import java.io.FileNotFoundException;



public class Demo03 {
    public static void main(String[] args) {
        try {
            readfile("c:\a.tx");
        } catch (FileNotFoundException e) {
//            System.out.println("e = " + e.getMessage());//  传递的文件路径不是c:a.txt
//            System.out.println(e.toString());// java.io.FileNotFoundException: 传递的文件路径不是c:a.txt
            e.printStackTrace();
            
        }
        System.out.println(" 后续代码 ");

    }


    public static void readfile(String fileName) throws FileNotFoundException {
        if (!fileName.equals("c:\a.txt")){
            throw new FileNotFoundException("传递的文件路径不是c:\a.txt");
        }
        System.out.println("路径没有问题,继续执行");
    }
}
finally代码块
package cn.itcast.day12.demo04;




public class DDemo06 {
    public static void main(String[] args) {
        int a = getA();
        System.out.println("a = " + a);// a = 200


    }

    private static int getA() {
        int a = 110;
        try {
            return a;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return 200;
        }
    }
}
子父类异常
package cn.itcast.day12.demo04;




public class Fu {
    public void show1() throws NullPointerException,ClassCastException{};
    public void show2() throws IndexOutOfBoundsException{};
    public void show3() throws IndexOutOfBoundsException{};
    public void show4() {};
    public void show5(){};

    class Zi extends Fu{
        //子类重写父类方法时,抛出和父类相同的异常
        public void show1() throws NullPointerException,ClassCastException{};
        //子类重写父类方法时,抛出父类异常的子类
        public void show2() throws ArrayIndexOutOfBoundsException{};
        //子类重写父类方法时,不抛出异常
        public void show3() throws IndexOutOfBoundsException{};
        //父类该方法没有抛出异常 子类不能异常
        

        //父类该方法没有抛出异常 子类只能捕获处理
        public void show5(){
            throw new NullPointerException("声明异常");
        }
    }
}

自定义异常类
package cn.itcast.day12.demo04;







public class RegisterException extends Exception{
    // 添加一个空参数的构造方法
    public RegisterException(){
        super();
    };
    // 添加一个带异常信息的构造方法
    //查看源码发现 所以的异常类都会有一个带异常信息的构造方法,方法内部会调用父类带异常信息的构造方法,让父类来处理这个异常信息

    public RegisterException(String messages){
        super(messages);
    };

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/271305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号