异常与错误:  异常:

在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它。Java中使用异常类来表示异常,不同的异常类代表了不同的异常。但是在Java中所有的异常都有一个基类,叫做Exception。

错误:

它指的是一个合理的应用程序不能截获的严重的问题。大多数都是反常的情况。错误是VM的一个故障(虽然它可以是任何系统级的服务)。所以,错误是很难处理的,一般的开发人员(当然不是你)是无法处理这些错误的,比如内存溢出。 和异常一样,在Java中用错误类来表示错误,不同的错误类代表了不同的错误。 但是在Java中所有的错误都有一个基类,叫做Error。

综上,我们可以知道异常和错误最本质的区别就是异常能被开发人员处理而错误时系统本来自带的,一般无法处理也不需要我们程序员来处理。

1.一个异常是在一个程序执行过程中出现的一个事件,它中断了正常指令的运行

2.错误,偏离了可接受的代码行为的一个动作或实例

异常的结构分类:

1、运行时异常(未检查异常)

2、编译时异常(已检查异常)

运行异常即是RuntimeException;其余的全部为编译异常

在Java中异常Exception和错误Error有个共同的父类Throwable。

Error Exception

runtimeException几个子类

1、 java.lang.ArrayIndexOutOfBoundsException

数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。

2、java.lang.ArithmeticException

算术条件异常。譬如:整数除零等。

3、java.lang.NullPointerException

空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的

属性、计算null对象的长度、使用throw语句抛出null等等

4、java.lang.ClassNotFoundException

找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出

该异常。

对异常的处理:

try{}catch{}

try{}catch{}finally{}无论有无异常finally代码块都会被执行

try{}finally{}也是可以组合使用的但是catch{}finally{}不可以

注意:在继承关系中,子类覆盖父类的方法,抛出异常的范围不能比父类更宽泛

异常的使用

在异常的使用这一部分主要是演示代码,都是我们平常写代码的过程中会遇到的(当然只是一小部分),抛砖引玉吗!

下面这个例子主要通过两个方法对比来演示一下有了异常以后代码的执行流程。

public classException1 {public static voidtestException1() {int[] ints = new int[] { 1, 2, 3, 4};

System.out.println("异常出现前");try{

System.out.println(ints[4]);

System.out.println("我还有幸执行到吗");//发生异常以后,后面的代码不能被执行

} catch(IndexOutOfBoundsException e) {

System.out.println("数组越界错误");

}

System.out.println("异常出现后");

}public static voidmain(String[] args) {

testException1();

}

}

运行结果:

异常出现前

数组越界错误

异常出现后

public classException2 {public static voidtestException2() {int[] ints = new int[] { 1, 2, 3, 4};

System.out.println("异常出现前");

System.out.println(ints[4]);

System.out.println("我还有幸执行到吗");//发生异常以后,他后面的代码不能被执行

}public static voidmain(String[] args) {

testException2();

}

}

运行结果:

异常出现前Exception in thread "main"

java.lang.ArrayIndexOutOfBoundsException: 4

at Exception2.testException2(Exception2.java:6)

at Exception2.main(Exception2.java:11)

总结:首先指出例子中的不足之处,IndexOutofBoundsException是一个非受检异常,所以不用try...catch...显示捕捉,但是我的目的是对同一个异常用不同的处理方式,看它会有什么不同的而结果(这里也就只能用它将就一下了)。异常出现时第一个方法只是跳出了try块,但是它后面的代码会照样执行的。但是第二种就不一样了直接跳出了方法,比较强硬。从第一个方法中我们看到,try...catch...是一种"事务性"的保障,它的目的是保证程序在异常的情况下运行完毕,同时它还会告知程序员程序中出错的详细信息(这种详细信息有时要依赖于程序员设计)。

编译异常例子java_Java中异常发生时代码执行流程相关推荐

  1. 「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析

    「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析 前言 一.我的开发环境 二.使用 Vue CLI (Vue 脚手架)快速搭建项目 三.初始项目的目录结构 ...

  2. 19. OP-TEE中TA与CA执行流程详解-------软件架构篇

    历经一年多时间的系统整理合补充,<手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 >一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件, ...

  3. 【spring源码系列-05】refresh中prepareRefresh方法的执行流程

    Spring源码系列整体栏目 内容 链接地址 [一]spring源码整体概述 https://blog.csdn.net/zhenghuishengq/article/details/13094088 ...

  4. 流行的 NPM 包依赖关系中存在远程代码执行缺陷

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...

  5. 详述 PyPI 中的远程代码执行漏洞,可引发供应链攻击

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 日本安全研究员RyotaK 曾在上周发现Cloudflare 公司CDNJS 服务中的一个漏洞,可导致第三方在当前12%的网站上运行恶意代 ...

  6. Scala入门示例反编译分析代码执行流程

    javap一下,看反编译结果: package com.zxl.java.chapter01;//分析 // 1. object在底层会生成两个类Hello , Hello$ // 2. Hello中 ...

  7. 谷歌浏览器32位安装包_谷歌浏览器发布紧急安全更新修复Blink内核中的任意代码执行漏洞...

    上月底谷歌浏览器推送紧急安全更新对浏览器漏洞进行修复,当时谷歌浏览器博客并未公布漏洞的具体细节信息. 蓝点网当时也在文章中称通常这种不公布漏洞的更新,都是比较严重的问题因此只有等多数用户修复后才会公开 ...

  8. JVM03Java代码执行流程

    一.Java的跨平台性 Java代码的执行流程 jvm运行原理: 运行一个HelloWorld的类,运行完毕之后,文件夹里出现HelloWorld.class的文件 javac程序是一个Java编译器 ...

  9. Android系统手机开机画面各个阶段代码执行流程分析(Part2)

    3. 第三个开机画面的显示过程 第三个开机画面是由应用程序bootanimation来负责显示的.应用程序bootanimation在启动脚本init.rc中被配置成了一个服务,如下所示: servi ...

  10. Android系统手机开机画面各个阶段代码执行流程分析(Part1)

    提到Android系统的UI,我们最先接触到的便是系统在启动过程中所出现的画面了.Android系统在启动的过程中,最多可以出现三个画面,每一个画面都用来描述一个不同的启动阶段.本文将详细分析这三个开 ...

最新文章

  1. [转]Android横竖屏切换解决方案
  2. java代码写jsp读取,Java IO学习基础之读写文本文件-JSP教程,Java技巧及代码
  3. N个数的全排列 -------指定排头法
  4. 激光投影市场将保持产品多元化发展趋势
  5. 正则表达式及shell
  6. 【CodeForces - 208C 】Police Station(单源最短路条数,起点终点建图,枚举顶点)
  7. Win7电脑创建本地连接网络的操作方法
  8. css圆角box(宽度自适应)(百度知道挖出)
  9. 隐马尔可夫模型(HMM)****
  10. php项目源码发布linux,php代码上传到linux服务器无法正常显示
  11. alter table move
  12. 【转】APP推广什么是cpa,cps,cpm
  13. 《算法竞赛 入门经典》
  14. 哪家的服务器cpu性能高,服务器cpu排行
  15. Lucene+Pangu分词
  16. 最美证件照工作室需要买什么东西
  17. 人工智能与复杂网络_为什么我与智能手机的关系变得复杂
  18. 数字图像处理与Python实现-图像降噪-指数型高通滤波
  19. 【专精特新周报】邦德股份北交所上市,首日收涨27.86%;12家创新层公司被降层;2022年国家新增支持五百家左右专精特新小巨人...
  20. 解决通用串行总线控制器里全是叹号问题

热门文章

  1. C#中构造函数和析构函数的用法
  2. 通过反射访问private的属性或方法
  3. mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
  4. Pytorch中的强化学习
  5. 面向接口的开发到面向对象的编程
  6. 代码的自动生成...
  7. 12月炼丹项目:信息抽取与知识图谱,预训练模型,文本生成,对话系统
  8. 困惑度 | NLP中对困惑度感到困惑?
  9. 实战必备!文本分类中的一些经验和 tricks
  10. 【论文解读】结合概率图模型和神经网络做图片问答