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 相关文章推荐
手把手教你用SpringBoot将文件打包成zip存放或导出
Jun 11 Java/Android
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
JavaWeb Servlet实现网页登录功能
Jul 04 Java/Android
Spring-cloud Config Server的3种配置方式
Sep 25 Java/Android
Spring Security中用JWT退出登录时遇到的坑
Oct 16 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
Mybatis-Plus 使用 @TableField 自动填充日期
Apr 26 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 Java/Android
Android实现图片九宫格
Jun 28 Java/Android
Spring中bean集合注入的方法详解
Jul 07 Java/Android
SpringBoot详解整合Redis缓存方法
Jul 15 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获取当前url路径的函数以及服务器变量
2013/06/29 PHP
php中函数前加&符号的作用分解
2014/07/08 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
jQuery 位置插件
2008/12/25 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
web打印小结
2017/01/11 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
python采集博客中上传的QQ截图文件
2014/07/18 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
Python换行与不换行的输出实例
2020/02/19 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
nohup的用法
2014/08/10 面试题
外语系毕业生找工作的求职信
2013/11/28 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
健康教育评估方案
2014/05/25 职场文书
财务会计岗位职责
2015/02/03 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书