一、异常定义

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

二、异常分析

     所有不正常类都继承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. [每日一题] 11gOCP 1z0-052 :2013-09-15 Enterprise Manager Support Workbench..................B9

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11715219 正确答案:ABD EnterpriseManger Support Work ...

  2. Spark学习体系

    底理解Spark,能够分为以下几个层次. 1 Spark基础篇 1.1 Spark生态和安装部署 在安装过程中,理解其基本操作步骤. 安装部署 Spark安装简单介绍 Spark的源代码编译 Spar ...

  3. CF-192-diy-2

    题目链接: http://codeforces.com/contest/330 A. Cakeminator 题目意思: 给一个r*c的矩阵方格,有些位置有S,如果某一行和一列都不含标记为S的方格,则 ...

  4. TexturePacker 介绍

    TexturePacker这个词从字面来说就是Texture(纹理) + Packer(打包). 它是一款把若干资源图片拼接为一张大图的工具.它由一位叫做Andreas Loew的老外开发的 :). ...

  5. BZOJ 1572: [Usaco2009 Open]工作安排Job( 贪心 )

    贪心... 按截止时间排序 , 然后从小到大考虑 . 假设当前考虑第 i 个任务 , 若目前已选工作数 < D_i , 那就选 i ; 否则 若已选工作中利润最小的比 P_i 小 , 那就去除它 ...

  6. Android各种效果集合

    QQ侧滑风格:http://www.cnblogs.com/lichenwei/p/4111252.html,通过继承HorizontalScrollView类来实现的.

  7. ASP.NET jQuery 随笔 显示CheckBoxList成员选中的内容

    通过jQuery来获取CheckBoxList成员内容. <%@ Page Language="C#" AutoEventWireup="true" Co ...

  8. orcad10.5启动加速

    OrCAD不知道怎么滴,启动速度慢的让人崩溃!30秒算快的,有时候甚至几分钟,要么需要连续开N次才打开,苦啊!!经过网上无数文章的洗礼,无数次的尝试,终于得出一种特效方法! 原因:OrCAD启动时在电 ...

  9. SQL 表连接,内联、外联、全连

    内连接,join 或 inner join 两个表中符合条件的集合 外连接,left join  或  right  join 以left左边或right右边的表为数据集合行,根据条件,另一侧没有的数 ...

  10. Android Testing(1) 浅尝Android测试的奥秘

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 仅供学习和交流使用,翻译不好勿喷,请只摘除不合适的地方 Testing The Android fram ...