Java十分钟精通异常处理机制

 更新时间:2022年04月06日 16:46:13   作者:星空下的213  
异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

一、什么是异常

异常机制:

异常机制是指当程序出现错误后,程序如何处理。具体来说就是程序发生异常,异常机制提供程序的退出安全通道。

通俗来说:就是为了让程序继续执行下去,不至于中断。

程序错误:

程序错误分为三种:

1.编译错误

2.运行时错误

3.逻辑错误。

(1)编译错误:因为程序没有遵循语法规则,编译程序能够自己发现并提示我们的错误的原因和位置。

(2)运行时错误:因为程序在执行时,运行环境发现了不能执行的操作。

(3)逻辑错误:因为程序没有按照预期的逻辑顺序执行。

异常就是指程序运行时发生错误,而异常处理就是对这些错误进行处理和控制。

编译错误如下:

编译错误

运行错误如下:

运行异常

算数异常报错:

错误描述

二、异常的结构图

在这里插入图片描述

常见异常:

序号异常名称异常描述
1java.lang.NullPointerException空指针异常:对象为空,并且调用相应方法。
2java.lang.ClassNotFoundException找不到指定类
3java.lang.ArrayIndexOutOfBoundsException数组下标越界
4java.lang.NumberFormatException数字格式化异常
5java.lang.ArithmeticException数学运算异常
6java.lang.StackOverflowError内存空间溢出错误,方法递归调用中,经常发生
7java.lang.ClassCastException类型转换异常,向下转型中经常发生
8java.text.ParseException时间格式化异常,SimpleDateFormart中经常发生
9java.util.InputMismatchException输入类型不匹配异常

三、捕获异常

虚拟机对异常的两种处理方式:

  • 捕获异常
  • 抛出异常

捕获异常

try - catch - finally

  • try:尝试着执行可能会出现异常的代码
  • catch:如果try中的代码在执行过程中,出现了异常,捕获该异常,如果没有异常,就不执行。
  • finaliy:其中的代码块是不管报不报错都会执行的,通常用来释放资源。
try{
    //可能会出错的代码块
}catch(){
    //出现异常后,执行的语句
}finally{
    //通常用来释放资源
}

四、声明和抛出异常

1.使用throws声明异常

​ 运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常

public void fun1() throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = format.parse("2020-10-12");
}

2.使用throw抛出异常

​ throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。

public void fun2() {
     throw new NullPointerException("空指针异常");  
     System.out.println("hello world");//会报红,提示unreachable statement,该语句不可能被执行
}

案例:

1、嵌套try-catch

@Test
public void fun2()  {
    try {
        throw new Exception("非运行时异常,哈哈哈");
    } catch (Exception e) {
        e.printStackTrace();
        try {
            throw new ParseException("解析异常,哈哈哈",0);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }finally {
        try {
            throw new TimeoutException("超时异常,哈哈哈");
        } catch (TimeoutException e) {
            e.printStackTrace();
            try {
                throw new SQLException("SQL异常");
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
}

2、代替返回语句

public int  funR1(){
        try {
            return 1;
        }catch (Exception e){
           throw new RuntimeException();
        }
    }
public int  funR2(){
    if(true) {
        return 1;
    }else{
        throw new RuntimeException();
    }
}

五、自定义异常

自定义异常,通常就是定义了一个继承自Exception类的子类,那么这个类就是一个自定义异常类。通常情况下,我们都会直接继承自Exception,一般不会继承某个运行时异常类。

案例如下:

public class HeroNotExistException extends RuntimeException {
    private String m;

    public String getM() {
        return m;
    }

    public void setM(String m) {
        this.m = m;
    }
//两个参数的有参构造,一个传递给父类Throwable,一个自己用
    public HeroNotExistException(String message, String m){
       super(message);
       this.m=m;
    }

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入您最欣赏的历史人物:");
        String name = sc.next();
        if(name.equals("孙悟空")){
            try{
                throw new HeroNotExistException("英雄人物不存在","哈哈");
            }catch (HeroNotExistException e){
                e.printStackTrace();
                System.out.println(e.getM());
            }
        }
    }
    
}

到此这篇关于Java十分钟精通异常处理机制的文章就介绍到这了,更多相关Java 异常处理机制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java数据结构与算法入门实例详解

    Java数据结构与算法入门实例详解

    这篇文章主要介绍了Java数据结构与算法入门实例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java获取接口的所有实现类方法总结示例

    Java获取接口的所有实现类方法总结示例

    这篇文章主要给大家介绍了关于Java获取接口的所有实现类方法的相关资料,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-06-06
  • 详解Java实践之适配器模式

    详解Java实践之适配器模式

    在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中
    2021-06-06
  • Linux中使用shell脚本管理Java应用程序

    Linux中使用shell脚本管理Java应用程序

    在日常开发和运维工作中,管理基于Java的应用程序是一项基础且频繁的任务,本文将通过一个示例脚本,展示如何利用Shell脚本简化这一流程,实现Java应用的一键式启动、停止与重启操作,本脚本不仅提升了工作效率,还确保了操作的标准化与可靠性
    2024-06-06
  • 基于SpringBoot2.0版本与老版本的区别

    基于SpringBoot2.0版本与老版本的区别

    这篇文章主要介绍了SpringBoot2.0版本与老版本的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • java实现简单贪吃蛇小游戏

    java实现简单贪吃蛇小游戏

    这篇文章主要为大家详细介绍了java实现简单贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Java递归算法简单示例两则

    Java递归算法简单示例两则

    这篇文章主要介绍了Java递归算法,通过两则示例分析了Java递归算法实现阶乘与求和的具体操作技巧,需要的朋友可以参考下
    2017-09-09
  • Java中使用增强for循环的实例方法

    Java中使用增强for循环的实例方法

    在本篇文章里小编给大家整理是的关于Java中如何使用增强for循环的实例内容以及相关代码,需要的朋友们可以学习下。
    2019-08-08
  • java实现微信公众号扫一扫

    java实现微信公众号扫一扫

    这篇文章主要为大家详细介绍了java实现微信公众号扫一扫,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Java 自定义注解及利用反射读取注解的实例

    Java 自定义注解及利用反射读取注解的实例

    下面小编就为大家带来一篇Java 自定义注解及利用反射读取注解的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论