一、异常定义

阻止当前方法或作用域继续执行的问题,称为异常

二、异常分析

     所有不正常类都继承Throwable类,这个类主要有两个子类Error类和Exception类。Error指系统错误,比如内存溢出或者虚拟机异常,Error出现程序就彻底崩溃了,Exception一般是编码、环境出现问题。Exception其中的一个子类是RuntimeException(非检查异常),能给引起RuntimeException异常的情况有很多,比如空指针异常、数组越界、数据类型转换错误、算数异常(12/0)、RuntimeException异常会有java虚拟机自动抛出自动捕获,一般是由代码逻辑问题引起的。下面有一个图大致的体现了各异常之间的关系:

检查异常需要我们自己捕获并处理异常,在java中用try—catch以及try—catch—finally这样的语句块来处理异常。基本语法如下:

三、如果try抛出异常,代码的执行变化

首先抛出异常的方法会终止执行,然后程序的控制权将会被移交给catch块中的异常处理。比如下边的例子:如果我们手动输入age的时候,输入的不是整数就会被InputmisatchException捕获而执行cache语句块。

如果try中会抛出很多种类型的异常,我们可以用多重catch块语法,如下:

四、多重catch语句块的注意事项:

     1、顺序问题:一定要先小后大的顺序,也就是先子类后父类的顺序。这是因为程序抛出异常的时候,异常处理系统会就近寻找匹配的异常处理程序,而子类继承于父类,针对父类的异常处理程序对于子类也是适用的。其实如果顺序写错了,把Exception放在最前边,编译也不会通过的。

在处理完异常之后还需要做一些善后工作,比如关闭连接、关闭已经打开的文件,这时就用到了finally语句块。语法如下:

五、try块中调用的这些方法是如何抛出异常的

     这里边就用到了两个关键字,throw和throws。

throws:throws是写在方法名和方法参数表之后在方法体之前,用throws修饰的方法向调用者表明该方法可能会抛出某种类型的异常,在这里是只抛出一种也可是多种,每个类型的异常用逗号隔开。具体的方法体里边可以调用一些会抛出异常的方法,或者可以先抛出一个异常,就用到了throw关键字。

throw:throw写在方法体里边,表明具体抛出异常的动作,我们也可以不用throw进行处理,把异常直接抛给上层处理。

六、java中的异常链

text1()拋出"喝车别开酒"异常,text2()调用text1()捕获异常,并且包装成运行时异常,继续抛出,在main方法中调用text2()方法。

运行结果如下:

Java中的异常详解的更多相关文章

  1. java中的注解详解和自定义注解

    一.java中的注解详解 1.什么是注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: @Override public Str ...

  2. Java中dimension类详解

    Java中dimension类详解 https://blog.csdn.net/hrw1234567890/article/details/81217788

  3. [转载]java中import作用详解

    [转载]java中import作用详解 来源: https://blog.csdn.net/qq_25665807/article/details/74747868 这篇博客讲的真的很清楚,这个作者很 ...

  4. Java中日志组件详解

    avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...

  5. java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的

    本文将详解java中的异常和异常处理机制 异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常. Java异常的分类和类结构图 1.Java中的所 ...

  6. Java面向对象之异常详解

    目录 Java面向对象之异常[一] Java面向对象之异常[二] 捕获异常的规则 访问异常信息 异常对方法重写的影响 finally详解 Java面向对象之异常[一] Java面向对象之异常[二] 往 ...

  7. JAVA中Object类方法详解

    一.引言 Object是java所有类的基类,是整个类继承结构的顶端,也是最抽象的一个类.大家天天都在使用toString().equals().hashCode().waite().notify() ...

  8. Java中反射机制详解

    序言 在学习java基础时,由于学的不扎实,讲的实用性不强,就觉得没用,很多重要的知识就那样一笔带过了,像这个马上要讲的反射机制一样,当时学的时候就忽略了,到后来学习的知识中,很多东西动不动就用反射, ...

  9. Java中的多线程详解

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

随机推荐

  1. 字符串模式匹配KMP算法

    一篇不错的博客:http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html KMP字符串模式匹配通俗点说就是一种在一个字符串中 ...

  2. hdu1281结题报告

    哎哎...自己刚刚一看到这个题目居然.....什么都想不到...看了一下别人的解题报告说最大匹配...于是就自己开始构思啦... 对于这个棋盘,有K个可以放棋子的位置....那么 首先我们开始可以求出 ...

  3. Unity5.0 RPG角色扮演历险类游戏之 森林历险记

    http://v.youku.com/v_show/id_XMTI1MjEyNjc4MA==.html? from=y1.7-1.2

  4. Compare the value of entity field.

    public class Program { static void Main(string[] args) { Program p = new Program(); p.Test(); Consol ...

  5. 学习MVC遇到的问题

    修改电脑上的DNS配置: Opendns 首选DNS服务器和备用DNS服务器分别设置为208.67.222.222和208.67.220.220 google的8.8.8.8 首选DNS服务器和备用D ...

  6. [javascript]MooTools Selectors(MooTools 选择器) ELEMENT DOM选择

    //ELEMENT DOM选择//on are tag names. //All the divs on the page: $$('div'); //All the divs and paragra ...

  7. shell 脚本中$$,$#,$?分别代表什么意思?

    $0 这个程式的执行名字$n 这个程式的第n个参数值,n=1..9$* 这个程式的所有参数,此选项参数可超过9个.$# 这个程式的参数个数$$ 这个程式的PID(脚本运行的当前进程ID号)$! 执行上 ...

  8. 基于Bootstrap的步骤引导html页面

    美工设计了一个下一步下一步的引导效果界面,百度谷歌了很久没有找到合适的控件,就想着能不能借助Bootstrap的标签页修改下,实现后的效果如下. 实现思路是先PS三张小图片,作为步骤之间引导的箭头,如 ...

  9. mac下 配置 Apache Php Mysql

    参考 http://www.guomii.com/posts/30136 参考 http://forums.mysql.com/read.php?11,600754,600754 MacOS 10.8 ...

  10. Maven Jrebel 多模块热部署方案

    近期在构建maven多模块项目时,发现web module依赖的其它模块,每次都要clean install成一个jar包,然后运行web module才能加载. 本生jrebel是配置在了web m ...