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基于webSocket实现扫码登录
Jun 22 Java/Android
Maven学习----Maven安装与环境变量配置教程
Jun 29 Java/Android
JavaWeb 入门:Hello Servlet
Jul 16 Java/Android
java设计模式--三种工厂模式详解
Jul 21 Java/Android
关于MybatisPlus配置双数据库驱动连接数据库问题
Jan 22 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
Mar 31 Java/Android
Java 定时任务技术趋势简介
May 04 Java/Android
Java 死锁解决方案
May 11 Java/Android
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
Jun 01 Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
Jun 10 Java/Android
springboot为异步任务规划自定义线程池的实现
Jun 14 Java/Android
SpringCloud超详细讲解Feign声明式服务调用
Jun 21 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
sony ICF-2010 拆解与改装
2021/03/02 无线电
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
处理单名多值表单的详解
2013/06/08 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
DOM 基本方法
2009/07/18 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
python getpass实现密文实例详解
2019/09/24 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
Python如何将装饰器定义为类
2020/07/30 Python
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
高级电工工作职责
2013/11/21 职场文书
门卫班长岗位职责
2013/12/15 职场文书
最新大学职业规划书范文
2013/12/30 职场文书
2014年会策划方案
2014/05/11 职场文书
爱心捐助倡议书
2014/05/19 职场文书
党员个人公开承诺书
2014/08/29 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
储备店长岗位职责
2015/04/14 职场文书
地道战观后感400字
2015/06/04 职场文书