Java异常体系非正常停止和分类


Posted in Java/Android onJune 14, 2022

一、异常概念

异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:

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

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

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

二、异常体系

异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Errorjava.lang.Exception,平常所说的异常指java.lang.Exception。 

Java异常体系非正常停止和分类

 Throwable体系:

  • Error:严重错误Error,无法通过处理的错误,只能事先避免,好比绝症。
  • Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎。

Throwable中的常用方法:

  • public void printStackTrace():打印异常的详细信息。

包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。

  • public String getMessage():获取发生异常的原因。

提示给用户的时候,就提示错误原因。

  • public String toString():获取异常的类型和异常描述信息(不用)。

出现异常,不要紧张,把异常的简单类名,拷贝到API中去查。

三、异常分类

我们平常说的异常就是指Exception,因为这类异常一旦出现,我们就要对代码进行更正,修复程序。 异常(Exception)的分类:根据在编译时期还是运行时期去检查异常?

  • 编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)
  • 运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会编译器检测(不报错)。(如数学异常)

Java异常体系非正常停止和分类

四、异常的产生过程解析

先运行下面的程序,程序会产生一个数组索引越界异常ArrayIndexOfBoundsException。我们通过图解来解析下异常产生的过程。 工具类

public class ArrayTools {
    // 对给定的数组通过给定的角标获取元素。
    public static int getElement(int[] arr, int index) {
        int element = arr[index];
        return element;
    }
}

测试类:

public class ExceptionDemo {
    public static void main(String[] args) {
        int[] arr = { 34, 12, 67 };
        intnum = ArrayTools.getElement(arr, 4)
        System.out.println("num=" + num);
        System.out.println("over");
    }
}

上述程序执行过程图解: 

Java异常体系非正常停止和分类

到此这篇关于Java异常体系非正常停止和分类的文章就介绍到这了,更多相关Java异常体系 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Java/Android 相关文章推荐
解析Java异步之call future
Jun 14 Java/Android
浅谈什么是SpringBoot异常处理自动配置的原理
Jun 21 Java/Android
idea搭建可运行Servlet的Web项目
Jun 26 Java/Android
JavaGUI模仿QQ聊天功能完整版
Jul 04 Java/Android
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
Sep 25 Java/Android
JAVA API 实用类 String详解
Oct 05 Java/Android
Spring this调用当前类方法无法拦截的示例代码
Mar 20 Java/Android
Java虚拟机内存结构及编码实战分享
Apr 07 Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
Apr 13 Java/Android
java版 简单三子棋游戏
May 04 Java/Android
Java实现扫雷游戏详细代码讲解
May 25 Java/Android
SpringBoot Http远程调用的方法
Aug 14 Java/Android
Android开发手册TextInputLayout样式使用示例
Jun 10 #Java/Android
Java实现简单小画板
Android开发EditText禁止输入监听及InputFilter字符过滤
Jun 10 #Java/Android
详解Spring Bean的配置方式与实例化
Jun 10 #Java/Android
Spring JPA 增加字段执行异常问题及解决
Jun 10 #Java/Android
Android开发手册自定义Switch开关按钮控件
Jun 10 #Java/Android
java实现面板之间切换功能
Jun 10 #Java/Android
You might like
php 日期时间处理函数小结
2009/12/18 PHP
基于php下载文件的详解
2013/06/02 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
一款基jquery超炫的动画导航菜单可响应单击事件
2014/11/02 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
单链表反转python实现代码示例
2018/02/08 Python
pycharm设置注释颜色的方法
2018/05/23 Python
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
教师工作态度自我评价
2015/03/05 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
话题作文之成长
2019/12/09 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android
python区块链实现简版工作量证明
2022/05/25 Python
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL