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 相关文章推荐
ConstraintValidator类如何实现自定义注解校验前端传参
Jun 18 Java/Android
详解Java实践之抽象工厂模式
Jun 18 Java/Android
springcloud之Feign超时问题的解决
Jun 24 Java/Android
Java基础之this关键字的使用
Jun 30 Java/Android
springboot临时文件存储目录配置方式
Jul 01 Java/Android
SpringBoot集成Druid连接池连接MySQL8.0.11
Jul 02 Java/Android
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
Jul 16 Java/Android
OpenCV实现普通阈值
Nov 17 Java/Android
Java9新特性对HTTP2协议支持与非阻塞HTTP API
Mar 16 Java/Android
InterProcessMutex实现zookeeper分布式锁原理
Mar 21 Java/Android
Java 获取Word中所有的插入和删除修订的方法
Apr 06 Java/Android
Android实现图片九宫格
Jun 28 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笔记之:php数组相关函数的使用
2013/04/26 PHP
PHP中的use关键字概述
2014/07/23 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
python循环监控远程端口的方法
2015/03/14 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Python实现网站表单提交和模板
2019/01/15 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
售后服务承诺书范文
2014/03/26 职场文书
房产委托公证书
2014/04/08 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
党性分析自查总结
2014/10/14 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
Go语言grpc和protobuf
2022/04/13 Golang