1.异常-Java代码在运行时期发生的问题,在Java中,把异常信息封装成了一个类。当出现了问题时,就会创建异常类对象并抛出异常相关的信息

  1.1 异常的继承体系

  Throwable:它是所有错误与异常的超类(祖宗类)

    |-Error  错误

    |-Exception  编译异常,进行编译JAVA程序是出现的问题

      |-RuntimeException  运行期异常,JAVA程序运行过程中出现的问题

  1.2 异常与错误的区别‘

  (1)异常:指程序在编译、运行期间发生了某种异常(XxxException),我们可以对异常进行具体的处理。若不处理异常,程序将会结束进行

  (2)错误:指程序在运行期间发生了某种错误(XxxError),Error错误通常没有具体的处理方式,程序将会结束运行。

         Error错误的发生往往都是系统级别的问题,都是jvm所在系统发生的,并反馈给jvm,我们无法处理,只能修正代码。

  1.3 抛出异常throw

  (1)使用格式: throw new 异常类名(参数);

  (2)具体操作:

    创建一个异常对象,封装一些提示信息(信息可以自己写)

    需要将这个异常对象告知调用者。throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。

  1.4 声明异常throws-若方法内通过throw抛出了编译时异常,而没有捕获处理,那么必须通过throws进行声明,让调用者去处理

  (1)声明异常格式: 修饰符 返回值类型 方法名(参数)  throws  异常类名1,异常类名2...{   }

  (2)throws用于进行异常类的声明,若该方法可能有多种异常情况产生,那么在throws后面可以写多个异常类,用逗号隔开。

  1.5 捕获异常try...catch...finally

  (1)捕获:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理

  (2)捕获异常格式:

    try{//需要被检测的语句}

    catch(异常类 变量){  //参数。   //异常的处理语句。}

    finally{  //一定会被执行的语句。}

  try:该代码块中编写可能产生异常的代码

  catch:用来进行某种异常的捕获,实现对捕获到的异常进行处理

  finally:有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。而finally就是解决这个问题,在finally代码块中存放的代码都是一定会被执行的。

  1.6 try...catch...finally异常处理的组合方式

  (1)try catch finally组合:检测异常,并传递给catch处理,并在finally中进行资源释放

  (2)try catch组合:对代码进行异常检测,并对检测的异常传递给catch处理。对异常进行捕获处理。

  (3)一个try多个catch组合:对代码进行异常检测,并对检测的异常传递给catch处理。对每种异常信息进行不同的捕获处理。

    多个catch中的异常不能相同,若catch中的多个异常之间有子父类关系,子类异常在上面的catch处理,父类异常在下面的catch处理

  (4)try finally组合:对代码进行异常检测,检测到异常后因为没有catch,所以一样会被默认jvm抛出。异常是没有捕获处理的。finally只为关闭资源

  1.7 运行时期异常

  (1)RuntimeException和它的所有子类异常,都属于运行时期异常。NullPointerException,ArrayIndexOutOfBoundsException等都属于运行时期异常

  (2)运行时期异常的特点:

    方法中抛出运行时期异常,方法中定义中无需throws声明,调用者也无需处理此异常

    运行时期异常一旦发生要程序人员修改源代码

  1.8 异常在方法重写中细节

  (1)子类覆盖父类方法时,若父类的方法声明异常,子类只能声明父类异常或者该异常的子类,或者不声明。

  (2)当父类方法声明多个异常时,子类覆盖时只能声明多个异常的子集

  (3)当被覆盖的方法没有异常声明时,子类覆盖时无法声明异常的

  (4)接口中没有声明异常,而实现的子类覆盖方法时发生异常,无法使用throws声明,只能用catch捕获。如果处理不了,catch中继续throw抛出,但是只能将异常专程RuntimeException子类抛出。

  1.9 异常中常用方法

  (1)String getMessage()   返回该异常的详细信息字符串,即异常提示信息

  (2)void printStackTrace()  在控制台输出该异常的名称和详细信息字符串、异常出现的代码位置

  (3)String toString()  返回该异常的名称与详细信息字符串

2.自定义异常类的定义

  2.1 格式

  Class 异常名 extends Exception{  //或继承RuntimeException

    public 异常名(){

    }

    public 异常名(Strng s){

      super(s);

    }

  }

  2.2 继承的细节

  (1)继承Exception,必须要throws声明,一声明就告知调用者进行捕获,一旦问题处理了调用者的程序会继续执行

  (2)继承RuntimeException,不需要throws声明,这时调用时不需要编写捕获代码的,因为调用根本就不知道有问题。

[Day21]异常的更多相关文章

  1. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  2. 异常---Day21(写得有错请指出,感谢)

    异常的概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:指的是程序在执行过程中,出现的非正常的情况,终会导致J ...

  3. 基本数据类型 异常 数组排序 JVM区域划分

               Day01 1.基本数据类型各占几个字节 Byte 1 short2 int4 long8 float4 double6 char2 boolean1 Byte b1=3,b2= ...

  4. 十九. Python基础(19)--异常

    十九. Python基础(19)--异常 1 ● 捕获异常 if VS异常处理: if是预防异常出现, 异常处理是处理异常出现 异常处理一般格式: try:     <............. ...

  5. Day21 过滤器(Filter)

    day21     过滤器(Filter) 过滤器概述   1 什么是过滤器 过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个 ...

  6. day21 03 异常处理

    day21 03 异常处理 1.什么是异常 异常:程序运行时发生错误的信号 错误:语法错误(一般是不能处理的异常) 逻辑错误(可处理的异常) 特点:程序一旦发生错误,就从错误的位置停下来,不再继续执行 ...

  7. 2019中山纪念中学夏令营-Day21[JZOJ]

    2019中山纪念中学夏令营-Day21[JZOJ] 提高组(B组模拟赛)Team_B (由于本人太弱,并没有订正完题目) (题解大部分是从官方题解文件上摘来的) 日常膜拜大神:じやゆん蒟蒻 正文部分: ...

  8. Java第二十二天,异常

    异常 程序在执行过程中,出现的非正常的情况,最终会导致JVM非正常停止. 注意: 在Java等面向对象编程语言当中,异常本身是一个类,产生异常的本质就是抛出一个异常对象.Java对异常采取中断处理方式 ...

  9. python学习Day21

    目录 今日内容详细 作业讲解 os模块 知识点进修 创建目录(文件夹) 删除目录(文件夹) 查看某个路径下所有的文件名称(文件.文件夹) 删除文件.重命名文件 获取当前路径.切换路径 软件开发目录规范 ...

随机推荐

  1. java 面经

    1.什么是Java虚拟机(JVM)?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. ...

  2. Django之form表单

    https://www.cnblogs.com/liwenzhou/p/8747872.html 1. form组件的介绍 之前web开发的模式,以注册为例: 1. 要有一个注册的页面,页面里面要有f ...

  3. PHP 【二】

    EOF EOF(heredoc)是一种在命令行shell(如sh.csh.ksh.bash.PowerShell和zsh)和程序语言(像Perl.PHP.Python和Ruby)里定义一个字符串的方法 ...

  4. 游记-WC2019

    Day0 报道.开幕式 一大早起来吃了个老北京炸酱面,然而一点都不北京,发现店子墙壁上"这9是--"(cy语) 一路辗转到了二中,报到时在签字版爷稳稳名字下写了cgz ak ioi ...

  5. C++设计模式——外观模式

    前言 在实际开发时,面对一个大的系统,总是会将一个大的系统分成若干个子系统,等子系统完成之后,再分别调用对应的子系统来完成对应的整体功能,这样有利于降低系统的复杂性:最终进行实现某个具体的功能时,我们 ...

  6. NYOJ

    爬行的蚂蚁 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 有N只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行.当蚂蚁爬到竿子的端点时就会掉落.由于竿子太细,两只蚂 ...

  7. 【原创】大数据基础之Parquet(1)简介

    http://parquet.apache.org 层次结构: file -> row groups -> column chunks -> pages(data/index/dic ...

  8. C++入门篇三

    引用:& &放在左边就是引用,放在右边就是取地址 int main() { //引用的类型必须相同,一经引用,不可以在被引用 ; int &b = a;//b引用a之后,两个同 ...

  9. java入门需了解的历史

    1991年,Sun公司的Green项目,Oak 1995年,推出Java测试版 1996年,JDK1.0 1997年,JDK1.1 1998年,JDK1.2,大大改进了早期版本的缺陷,是一个革命性的版 ...

  10. Consideration about improving mathematics study

    In this article, I’ll present my ideas about how to improve mathematics study, which are the forewor ...