一、异常的理解及体系结构图

1、理解

异常:程序运行过程中发生的不正常现象。
java中的错误:
  语法错误
  运行异常
  逻辑错误

2、体系图

java程序在执行过程中所发生的异常分为两类:

  Error:Java虚拟机无法解决的严重问题。如JVM系统内部错误、资源耗尽等严重情况(StackOverflowError、OOM),一般不编写针对性的代码进行处理

  Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。一般有两种解决方法:一是遇到错误就终止程序的运行。另一种方法是由程序员在编写程序时,就考虑到错误的检测、错误消息的提示,以及错误的处理。

  常见的异常可分为两类:运行时异常和编译时异常。异常体系图如下,其中红色部分为受检异常,蓝色部分为非受检异常。

二、异常处理的方式

1、抓模型

(1)语法

try{
  ①
  //容易出现异常的代码
  ②
}catch(异常类型 e){
  //处理异常的语句
  ③
}finally{
  //最后一定要执行的语句
  ④
}

执行顺序 ★
  如果出现了异常: ①③④一定执行,⑤不一定。如果异常被成功捕获,而且没有其他跳转,⑤会执行,否则⑤不执行
  如果没有出现异常:①②④一定执行, ⑤不一定。如果没有其他跳转,⑤会执行,否则⑤不执行

(2)好处

①提高了用户体验性
②将正常代码和容易出错的代码实现了分离,提高了代码的阅读性和维护性
③如果成功捕获异常,则起到了拦截异常的作用,异常后面的语句会正常执行

(3)注意事项

①catch块可以省略
②finally块可以省略
③尽量使用多个catch块,代替多个try catch
④不能滥用异常
⑤catch块可以有多个,但如果catch块的异常类型为父类类型,需要将该catch块放在最后

2、抛模型(默认异常处理方式)

(1)语法

修饰符 返回类型 方法名(参数列表) throws 异常类型XX{
}
注意:异常类型XX为方法中容易出现的异常的类型或父类类型

(2)执行特点

将异常抛给调用方,如果调用方不处理,则继续往上抛,直到抛给jvm。而jvm使用的是默认的处理方式。e.printStackTrace()

三、自定义异常

1、语法

class XXException extends Exception或RuntimeException{
  public XXException(){}
  public XXException(String msg){super(msg);}
}

2、如何使用自定义异常

在需要生成异常对象的地方,添加如下语句:
  throw new XXException(异常信息);

四、常见问题解答

1、生成异常对象的方式

2种方式:
方式一:系统自动生成异常对象
  针对于:系统定义好的异常类
方式二:手动生成异常对象
  针对于:系统定义好的异常类和自定义的异常类
  语法:throw new 异常类型(实参);

2、子类重写父类方法的异常说明

子类重写的方法抛出的异常类型可以相同或为子类类型

class Father{
  public void run() throws Exception{}
}
class Son extends Father{
  public void run() throws Exception{}
}
class Daughter extends Father{
  public void run() throws IOException{}
}

3、throws和throw对比

  说明 放的位置 后面跟的东西
throws 异常处理的方式 方法声明的地方 异常类型 public void method throws XXXException{}
throw 生成异常对象的关键字 方法体中 异常对象 throw new XXXException(msg)

转载于:https://www.cnblogs.com/truthseeking/p/9538320.html

JavaSE基础知识(6)—异常和异常处理相关推荐

  1. 【JavaSE 基础知识盲点小结】

    [JavaSE 基础知识盲点小结] 一.第一天: 1. 在 cmd 命令窗口问题: ①编译是: javac HelloWorld.java ②运行时是: java HelloWorld (类名 不加 ...

  2. java 数字运算异常_Java基础之:异常及异常处理

    Java基础之:异常及异常处理 我们将java程序执行过程中出现的不正常现象称为异常,例如:之前遇到的数组下标越界异常,空指针异常等等 执行过程中发生的异常事件分为两类: Error(错误):Java ...

  3. Javase基础知识总结

    今天11.25,我开始了第二天的写日记 我也开始了我的整理笔记 我希望我可以一直坚持下去 我不想为了未来的我后悔 加油 Javase基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我 ...

  4. JavaSE基础知识(五)--面向对象代码实现初步(实现一个简单的类类型代码)

    Java SE 是什么,包括哪些内容(五)? 本文内容参考自Java8标准 一.面向对象(代码实现): 首先,在这里我需要说明一个根本性的问题:实际上,面向对象编程包括了两部分,一个是你的编程思想,一 ...

  5. 面向对象-----6(javaSE基础知识完结篇)

    目录 解析面向对象 内存分析 三大特性.封装.继承.多态 接口 内部类 涉及知识目录总览: 资料来自于马士兵java笔记 这是javaSE基础知识的最后一篇笔记 1. 解析面向对象 返回目录 [1]面 ...

  6. JavaSE基础知识(附上代码实现)1

    ###01.01_计算机基础知识(计算机概述)(了解) * A:什么是计算机?计算机在生活中的应用举例     * 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动. ...

  7. JavaSE基础知识回顾

    文章目录 JavaSE 一.前言 1.1.解决大家的疑惑 1.2.Java和Python的抉择 1.3.走进Java 二.预科 2.1.学习准备:博客 2.2.MarkDown 2.3.基本Dos命令 ...

  8. JavaSE基础知识汇总

    1.Java基础 函数与类前面的修饰符示例 控制结构示例 包含的内容有:for循环.while循环.switch语句,if语句 public static void main(String[] arg ...

  9. JavaSE基础知识(个人总结)

    声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章               2. 由于是个人总结, 所以用最精简的话语来写文章           ...

最新文章

  1. 如何快速搭建 LaTeX 轻量级写作环境(VSCode)?
  2. SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流...
  3. html中如何屏蔽一段代码,html中如何使用python屏蔽一些基本功能(示例代码)
  4. yzmcms图片自适应代码_[ NeurIPS 2020 ] 一叶知秋 —— 基于“单目标域样本”的领域自适应方法...
  5. 洛谷P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
  6. 凝结时光:ImageMagick 制作 gif
  7. 集训队脱单大法:这是一道只能由学姐我自己出数据的水题(牛客竞赛)
  8. 传递函数_使用python计算麦克风阵列信号的传递函数
  9. 朴素贝叶斯法(Naive Bayes,NB)
  10. oracel 数据库问题 ORA-12547 ORA-12571
  11. 程序流程三控制,顺序控制,分支控制,循环控制综合练习题
  12. 乐max2 android9,辣评烩:乐Max 2即将升级EUI 6.0 基于安卓7.0!
  13. 五寸照片尺寸是多少?如何自己制作证件照?
  14. 巴特沃斯数字低通滤波器的设计步骤
  15. python imshow彩色_matplotlib实现显示伪彩色图像及色度条
  16. 用JAVA输入一位整数,当输入1-7时显示对应的英文星期名称缩写
  17. TLV协议——实现封包与解析
  18. js获取android系统版本号,JS获取系统版本和手机型号
  19. 模糊数学(Fuzzy Mathematics)理论基础
  20. android设置页面转场特效

热门文章

  1. FlashFXP使用教程
  2. Duplicate standby database from active database
  3. ASP.NET缓存:方法分析和实践示例
  4. yml的mybatis的sql查看
  5. 操作系统04进程同步与通信
  6. HTTP/2 学习笔记
  7. 飞行模式的开启和关闭
  8. 01-gt;选中UITableViewCell后,Cell中的UILabel的背景颜色变成透明色
  9. 站长快讯 WordPress跨站攻击漏洞修补
  10. Qt第五课 无构造函数可以接受源类型,或构造函数重载决策不明确