异常就是程序在运行时出现的不正常情况。发生在运行时期,java程序在运行时期发生的不正常情况,此时java就按照面向对象的思想对不正常现象进行描述和对象的封装。异常的由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象。异常其实就是java对不正常情况进行描述后的对象体现。

一、异常体系

  Thorwable是所有异常的基类,按异常发生场所可分为Error和Exception两种:

  • 对于严重的,java通过Error类进行描述(通常出现重大问题如:运行的类不存在或者内存溢出等)。对于Error一般不编写针对性的代码对其进行处理。Error是由系统底层发生的,它将告诉JVM,JVM告诉使用者。Error一旦出现不做针对性的处理,直接修改代码。
  • 对于非严重的,java通过Exception类进行描述。异常由JVM发生的,并告诉调用者,对于Exception可以使用针对性的处理方式进行处理。

  按异常的捕获与处理状态可分为checked exception(受查异常)与unchecked exception(非受查异常):

  • checked exception(受查异常),也称非运行时异常(运行时异常以外的异常就是非运行时异常),由代码能力之外的因素导致的运行时错误。java编译器强制程序员必须进行捕获处理,比如常见的有IOExeption和SQLException。如果不进行捕获或者抛出声明处理,编译都不会通过
  • unchecked exception(非受查异常),包括Error和RuntimeException,比如常见的NullPointerException、IndexOutOfBoundsException。对于RuntimeException,java编译器不要求必须进行异常捕获处理或者抛出声明,由程序员自行决定。

  按照运行时异常与非运行时异常划分:

  • 典型的RuntimeException包括NullPointerException、IndexOutOfBoundsException、IllegalArgumentException等。
  • 典型的非RuntimeException包括IOException、SQLException等。

二、异常处理

1.捕获异常

捕获机制:try-catch-finally(1-n-1/1-0-1/1-n-0)

  • try{}语句块:里面是要检测的Java代码,可能会抛出异常,也可能会正常运行。
  • catch(异常类型){}块:是当Java运行时,系统接收到try块中所抛出异常对象时,会寻找能处理这一异常catch块来进行处理,注意异常类型需要与try{}语句块可能抛出的异常要匹配。可以有多个catch块。不同的异常类型对应不同的处理代码。
  • finally{}语句块:不管系统有没有抛出异常,都会去执行,一般用来释放资源。除了在之前执行了System.exit(0)

2.抛出异常

抛出机制:throw,throws

  • throws:用在函数上,后面跟的是异常类,可以跟多个;用来声明异常,让调用者知道该功能可能出现的问题,并有调用者可以给出预先的处理方式
  • throw:用在函数内,后面跟的是异常对象;抛出具体问题对象,执行到throw功能就已经结束,跳转到调用者,将具体的问题对象也抛给了调用者
  • 抛出原则:功能内部有异常抛出,那么功能上一定要声明,内部抛什么功能上就要声明什么,声明的目的就是为了让调用者处理,如果调用者不处理则编译失败!
  • 特殊情况:当函数内通过throw抛出了RuntimeException及其子类的异常对象时,函数上可以不进行声明异常类!不声明的目的就是不让调用者处理,让调用者的程序停止。抛出异常不声明则发生异常时程序会停止,若是声明异常调用者则可以对异常进行捕获并加以处理然后程序可以继续运行,此时需要注意异常处理要得当不能影响后面代码的运行

JavaSE--异常机制的更多相关文章

  1. [Java学习笔记] Java异常机制(也许是全网最独特视角)

    Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...

  2. Atitit 异常机制与异常处理的原理与概论

    Atitit 异常机制与异常处理的原理与概论 1. 异常vs 返回码1 1.1. 返回码模式的处理 (瀑布if 跳到失败1 1.2. 终止模式  vs 恢复模式(asp2 1.3. 异常机制的设计原理 ...

  3. C++ 异常机制分析

    C++异常机制概述 异常处理是C++的一项语言机制,用于在程序中处理异常事件.异常事件在C++中表示为异常对象.异常事件发生时,程序使用throw关键字抛出异常表达式,抛出点称为异常出现点,由操作系统 ...

  4. 【转载】C++异常机制的学习

    参考了这篇文章:http://blog.chinaunix.net/uid-24517549-id-4079174.html 关于线程 进程和线程的概念相信各位看官早已耳熟能详.在这里,我只想带大家回 ...

  5. Java异常机制

    Java异常分类 异常表明程序运行发生了意外,导致正常流程发生错误,例如数学上的除0,打开一个文件但此文件实际不存在,用户输入非法的参数等.在C语言中我们处理这类事件一般是将其与代码正常的流程放在一起 ...

  6. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

  7. C 几种异常机制简单讲述

    引言 这是关于C中如何使用异常机制的讨论.顺带讲一讲C中魔法函数的setjmp内部机制.通过它实现高级的异常try...catch. 允许我先扯一段面试题. 对于计算机面试题. 算法题等.觉得还是有意 ...

  8. C++异常机制知识点

     在这里总结一下,C++中的异常机制,以及如何使用异常的知识点 C++中处理异常的过程是这样的:在执行程序发生异常,可以不在本函数中处理,而是抛出一个错误信息,把它传递给上一级的函数来解决,上一级解决 ...

  9. [转载]C++异常机制的实现方式和开销分析

    原文章网址:http://baiy.cn/doc/cpp/inside_exception.htm C++异常机制的实现方式和开销分析 白杨 http://baiy.cn 在我几年前开始写<C+ ...

  10. c++异常机制实现原理

    今天突然看到一篇文章,讲异常机制的实现,所以分享一下:http://baiy.cn/doc/cpp/inside_exception.htm 内容讲的很深,但是编译器的实现是不是真是这样就不知道了,我 ...

随机推荐

  1. android data binding jetpack VI 清理一些概念。BR 运算表达式

    android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...

  2. 取得远端相应Json并转化为Java对象一

    JDK:1.8.0_212 IDE:STS4(Spring Tool Suit4 Version: 4.3.2.RELEASE) 工程下载:https://files.cnblogs.com/file ...

  3. DP----鬼畜的数字三角形

    数字三角形 1   洛谷   P1216  数字金字塔 我们可以用 f [ i ] [ j ] 表示从(1,1)出发,到达(i,j)的最大权值和. (i , j)可以由 正上(i - 1 , j)或者 ...

  4. C#卸载加载到进程里的dll

    参考 DLL卸载 VC实现DLL注入之DLL卸载 CreateToolhelp32Snapshot (kernel32) CreateToolhelp32Snapshot函数 RegAsm安装卸载办法

  5. LC 963. Minimum Area Rectangle II

    Given a set of points in the xy-plane, determine the minimum area of any rectangle formed from these ...

  6. Hibernate3核心API-SchemaExport类

  7. 网络通信框架之okHttpUtils

    okHttpUtils封装库志支持: 一般的get请求 一般的post请求 基于Http的文件上传 文件下载 上传下载的进度回调 加载图片 支持请求回调,直接返回对象.对象集合 支持session的保 ...

  8. selenium元素定位方式xpath总结

    一.绝对路径(不要使用,除非已经使用了所有方式仍然无法定位)方法:根据实际目录,逐层输写.例子: find_element_by_xpath("/html/body/div[2]/form/ ...

  9. visual studio 2019 中初始化 vue.js 项目

    vs项目模板,webpack模板的创建方式在vs里创建后,npm install的过程会卡很久,暂时原因不明,感觉应该是文件太多,需要写入太多零碎文件. 试了几种初始化方法,还是用最新cli创建最好, ...

  10. Kafka 可视化工具(Kafka Tool)

    Kafka 可视化工具 使用Kafka的小伙伴,有没有为无法直观地查看 Kafka 的 Topic 里的内容而发过愁呢? 下面推荐给大家一款带有可视化页面Kafka工具:Kafka Tool (目前最 ...