1. 异常的概念

1.1什么是异常

异常指的是程序运行时出现的不正常情况.

1.2异常的层次

Java的异常类是处理运行时的特殊类,每一种异常对应一种特定的运行错误.所有Java异常类都是系统类库中Exception类的子类,其继承结构如图:

Throwable类为该处理层次的最高层,其中定义了一个异常描述串,以及获取该描述的getMessage()方法.

对于严重的:Error类时JVM系统内部错误,程序中不能对其编程处理.                                              //对Error一般不编写针对性的代码对其进行处理

对于不严重的:Exception类时程序代码中要处理的异常,这类异常发生可能与程序运行时的数据有关.   //可进行相应处理

    Throwable中的方法

      getMessage()    获取异常信息,返回字符串。      

      toString()     获取异常类名和异常信息,返回字符串。

      printStackTrace()   获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
      printStackTrace(PrintStream s)  通常用该方法将异常内容保存在日志文件中,以便查阅。

1.3系统定义的异常

Exception类有若干子类,每个子类代表一种特定的运行错误,这些子类有的是系统事先定义好并包含在Java类库中的,成为系统定义的运行异常,如下表:


2. 异常的处理

2.1 try...catch..finally结构进行捕获

①try

{语句块;}

②catch (异常类名   参变量名)      //注意如果没有catch就代表异常没被处理过,如果该异常是检测时异常,则必须声明.

{语句块;}

③finally     //定义一定执行的代码:通常用于关闭资源

{语句块;}

1,2    1,3,     1,2,3   三种方式都是合法语句.

    (1)一个try可以引导多个catch块。但是不要定义多余的catch块,多个catch块的异常出现继承关系,父类异常catch块放在最后面

    (2)异常发生后,try块中的剩余语句将不再执行

    (3)catch块中的代码要执行的条件是,首先在try块中发生了异常,其次异常的类型与catch要捕捉的一致。 建议声明更为具体的异常,这样处理的可以更具体。

    (4)可以无finally部分,但如果存在,则无论异常发生否,finally部分的语句均要执行。即便是try或catch块中含有退出方法的语句return,也不能阻止finally代码块的执行;除非执行System.exit(0)等导致程序停止运行的语句。

  2.2 使用throws关键字抛出异常,使用在函数上,后跟一个或多个异常类.

    记住:throw单独存在, 下面不要定义语句,因为执行不到. 但是throws是有可能执行或不执行,所以后可跟.


3. 自定义异常(分为编译时检测的异常  和  不被检测异常RuntimeException以及子类,使该异常一发生就停止运算,因此不需声明、不需处理 ]

3.1 自定义异常类设计

通过继承Exception来实现。一般还在构造方法中super进行异常标识, 复写toString()方法.

3.2 抛出异常

通过throw抛出异常. 异常的本质是对象,因为throw关键词后跟的是new运算符来创建的一个异常对象.

3.3 方法的异常声明

如果一个方法有异常抛出,有两种选择:

[1]在方法内对异常进行捕获处理

[2]在方法内不处理异常,而是交给外部调用程序,这是要在方法头使用throws子句列车该方法可能产生的异常.

3.4 继承Exception原因:

异常体系有一个特点:因为异常类和异常对象都可被抛出.他们都具备可抛性,这是Throwable体系中独有特点.只有这个体系中的类和对象才可以被throws和throw操作.

3.5 异常在子类覆盖中的体现:

1.子类覆盖父类时,如果父类的方法抛出的异常,那么子类只能抛出父类异常或该异常的子类.

2.如果父类方法抛出多个异常,那么子类在覆盖方法时,只能抛出父类异常的子集.

3.如果父类或借口的方法中没有异常抛出,那么子类在覆盖方法时,也不可能抛出异常.如果子类方法发生异常,就必须进行try处理,绝对不能抛.

05_Java异常(Exception)的更多相关文章

  1. Atitit java的异常exception 结构Throwable类

    Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ...

  2. 异常Exception in thread "AWT-EventQueue-XX" java.lang.StackOverflowError

    今天太背了,bug不断,检查到最后都会发现自己脑残了,粗心写错,更悲剧的是写错的时候还不提示错. 刚才有遇到一个问题,抛了这个异常Exception in thread "AWT-Event ...

  3. Sqoop异常:Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject

    18/12/07 01:09:03 INFO mapreduce.ImportJobBase: Beginning import of staffException in thread "m ...

  4. 异常 Exception 堆栈跟踪 异常捕获 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. 理解Python语言里的异常(Exception)

    Exception is as a sort of structured "super go to".异常是一种结构化的"超级goto". 作为一个数十年如一日 ...

  6. PL/SQL 08 异常 exception

    --PL/SQL错误  编译时  运行时 --运行时的出错处理  EXCEPTION --异常处理块DECLARE …BEGIN …EXCEPTION WHEN OTHERS THEN  handle ...

  7. 【马克-to-win】学习笔记—— 第五章 异常Exception

    第五章 异常Exception [学习笔记] [参考:JDK中文(类 Exception)] java.lang.Object java.lang.Throwable java.lang.Except ...

  8. 【异常】Maxwell异常 Exception in thread "main" net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 1, column 596. Encountered: <EOF> after : ""

    1 详细异常 Exception in thread "main" net.sf.jsqlparser.parser.TokenMgrError: Lexical error at ...

  9. 异常-Exception in thread "main" net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 1, column 596. Encountered: <EOF> after :

    1 详细异常 Exception in thread "main" net.sf.jsqlparser.parser.TokenMgrError: Lexical error at ...

随机推荐

  1. 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点

    第 13 题(链表):题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针.链表结点定义如下: struct ListNode {int m_nKey;Lis ...

  2. August 24th 2016 Week 35th Wednesday

    Storms make trees take deeper roots. 暴风雨能使大树的根扎得更深. If the trees already have deep roots, then the s ...

  3. iOS系类教程之用instruments来检验你的app

    比较了好多关于instruments 还是发现老外写的比较牛逼.于是果断翻译过来.有能力的的可以去看英文原版,鼓励大家看原版资料远离二手教程.这里是原文   入门 为了节省大家的时间,提供一个演示的D ...

  4. hdu2108(判断凸多边形)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2108 题意: 给出一个多边形的所有顶点,判断是不是凸多边形: 思路: 判断凸多边形的方法比较多,如:若 ...

  5. NYOJ之喷水装置(一)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsUAAAJvCAIAAAAcLjvHAAAgAElEQVR4nO3drXLjzNaG4e8kzH0gof

  6. 以 MAMP 为 Mac OS X 安装并设置 PHP开发环境

    PHP 页需要通过 Web 服务器处理.因此,要在 Dreamweaver 中使用 PHP 进行开发,您需要访问支持 PHP 的 Web 服务器和 MySQL 数据库.phpMyAdmin 也很实用, ...

  7. AR , VR, GVR ...

    虚拟现实与增强现实(眼镜或头盔)的现状与未来-简介http://blog.csdn.net/yanzhanyi/article/details/41982033 Google VR  |  Googl ...

  8. Pyqt phonon的使用

    本文是用Pyqt实现了下网上一个Qt版大牛关于phonon的介绍 Qt phonon地址:http://wenku.baidu.com/link?url=nH_dZ8lZbXHy8N5__8jAWLX ...

  9. 【翻译十六】java-固定对象的定义方法

    A Strategy for Defining Immutable Objects The following rules define a simple strategy for creating ...

  10. qsort函数详解

    C语言标准库函数 qsort 详解 文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. 原文链接:http://www.slyar.c ...