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 相关文章推荐
解决tk mapper 通用mapper的bug问题
Jun 16 Java/Android
详解Java实现数据结构之并查集
Jun 23 Java/Android
spring boot项目application.properties文件存放及使用介绍
Jun 30 Java/Android
mybatis中sql语句CDATA标签的用法说明
Jun 30 Java/Android
Java实现房屋出租系统详解
Oct 05 Java/Android
springboot中的pom文件 project报错问题
Jan 18 Java/Android
springboot 自定义配置 解决Boolean属性不生效
Mar 18 Java/Android
springboot用户数据修改的详细实现
Apr 06 Java/Android
Elasticsearch 配置详解
Apr 19 Java/Android
java实现自定义时钟并实现走时功能
Jun 21 Java/Android
Java Spring读取和存储详细操作
Aug 05 Java/Android
Spring Boot实现文件上传下载
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
深入了解php4(2)--重访过去
2006/10/09 PHP
php.ini 中文版
2006/10/28 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
php格式文件打开的四种方法
2018/02/24 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
Python如何实现文本转语音
2016/08/08 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python 异常处理的实例详解
2017/09/11 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
上海期货面试题
2014/01/31 面试题
交通文明倡议书
2014/05/16 职场文书
政府个人对照检查材料
2014/08/28 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
2014年导购员工作总结
2014/11/18 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL