1. 异常的体系结构
 * java.lang.Throwable*      |-----java.lang.Error:一般不编写针对性的代码进行处理。*         |-----java.lang.Exception:可以进行异常的处理*            |------编译时异常(checked)*                  |-----IOException*                      |-----FileNotFoundException*                    |-----ClassNotFoundException*           |------运行时异常(unchecked,RuntimeException)*                   |-----NullPointerException*                     |-----ArrayIndexOutOfBoundsException*                   |-----ClassCastException*                   |-----NumberFormatException*                    |-----InputMismatchException*                   |-----ArithmeticException

自定义异常

如何自定义一个异常类?* 1. 继承于现有的异常结构:RuntimeException 、Exception* 2. 提供全局常量:serialVersionUID* 3. 提供重载的构造器
public class MyException extends Exception{static final long serialVersionUID = -7034897193246939L;public MyException(){}public MyException(String msg){super(msg);}
}

异常处理

1.java异常处理的抓抛模型
过程一:“抛”:程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象。
并将此对象抛出。
一旦抛出对象以后,其后的代码就不再执行。
关于异常对象的产生:① 系统自动生成的异常对象
② 手动的生成一个异常对象,并抛出(throw)

过程二:“抓”:可以理解为异常的处理方式:① try-catch-finally ② throws

2.异常处理方式一:try-catch-finally

2.1 使用说明:try{//可能出现异常的代码}catch(异常类型1 变量名1){//处理异常的方式1}catch(异常类型2 变量名2){....finally{//一定会执行的代码}* 5. 常用的异常对象处理的方式: ① String  getMessage()    ② printStackTrace()* 6. 在try结构中声明的变量,出了try结构以后,就不能再被调用2.2:finally的再说明:* 1.finally是可选的* 2.finally中声明的是一定会被执行的代码。即使catch中又出现异常了,try中return语句,catch中return语句等情况。* 3.像数据库连接、输入输出流、网络编程Socket等资源,JVM是不能自动的回收的,我们需要自己手动的进行资源的释放。此时的资源释放,就需要声明在finally中。

体会2:开发中,由于运行时异常比较常见,所以我们通常就不针对运行时异常编写try-catch-finally了。
针对于编译时异常,我们说一定要考虑异常的处理。

对比两种处理方式

try-catch-finally:真正的将异常给处理掉了。
throws的方式只是将异常抛给了方法的调用者。并没真正将异常处理掉。

体会开发中应该如何选择两种处理方式?

5.1 如果父类中被重写的方法没throws方式处理异常,则子类重写的方法也不能使用throws,
意味着如果子类重写的方法中异常,必须使用try-catch-finally方式处理。

5.2 执行的方法a中,先后又调用了另外的几个方法,这几个方法是递进关系执行的。
我们建议这几个方法使用throws的方式进行处理。
而执行的方法a可以考虑使用try-catch-finally方式进行处理。

3.典型例题

class Student{private int id;public void regist(int id) throws Exception {if(id > 0){this.id = id;}else{//手动抛出异常对象
//          throw new RuntimeException("您输入的数据非法!");
//          throw new Exception("您输入的数据非法!");throw new MyException("不能输入负数");}}@Overridepublic String toString() {return "Student [id=" + id + "]";}
}

JavaSE----异常处理相关推荐

  1. JavaSE——异常处理(异常简介、try-catch-finally、throws、throw)

    第4节 异常处理 异常处理学习的目标: 明确说明是异常(重点) 能辨识出常见的异常及其含义(熟悉) 理解异常产生的原理(了解) 能处理异常(重点) 能够自定义异常(熟悉) 一.什么是异常? 异常是在程 ...

  2. JavsSE内容全链接

    JavsSE内容全链接 JavaSE语言概述 JavaSE基本语法上 JavaSE基本语法下 JavaSE数组 JavaSE面向对象编程上 JavaSE面向对象编程中 JavaSE面向对象编程下 Ja ...

  3. JavaSE学习总结(八)—— 异常处理(Exception)

    JavaSE学习总结(八)-- 异常处理(Exception) 参考文章: (1)JavaSE学习总结(八)-- 异常处理(Exception) (2)https://www.cnblogs.com/ ...

  4. 04 - JavaSE之异常处理

    异常的概念(运行期出现的错误) java 异常是 java 提供的用于处理程序中错误的一种机制. 所谓的错误是指在程序运行的过程中发生的一些异常事件.(如:除0溢出,数组下标越界,所要读取的文件不存在 ...

  5. JavaSE基础知识(6)—异常和异常处理

    一.异常的理解及体系结构图 1.理解 异常:程序运行过程中发生的不正常现象. java中的错误: 语法错误 运行异常 逻辑错误 2.体系图 java程序在执行过程中所发生的异常分为两类: Error: ...

  6. JavaSE之异常处理

    1. 异常处理 意义 ​ try-catch-finally在开发中只是将可能出现异常的一段代码包起来,当其出现异常时是以一种友好的方式体现出来,并不能真正解决代码上的错误,异常的情况下还是需要修改代 ...

  7. JavaSE基础笔记——不可变集合简介、Stream流体系、异常处理

    1.不可变集合简介 不可变集合,就是不可被修改的集合. 集合的数据项在创建的时候提供,并且在整个生命周期中都不可改变.否则报错. 为什么要创建不可变集合? 如果某个数据不能被修改,把它防御性地拷贝到不 ...

  8. 【JavaSE】 try-catch 异常处理

    文章目录 try-catch 异常处理 1. try-catch 方式处理异常说明 2. try-catch 方式处理异常-快速入门 3. try-catch 方式处理异常-注意事项 4. try-c ...

  9. Java学习的第三十天(JavaSE结束篇02_学生管理系统(集合+异常处理+对象流+递归输入判断))

    一.学生管理系统的业务需求 1.需要有一个学生类,它有四个成员变量:ID 姓名 性别 班级 2.成员变量必须私有化,然后只能通过set方法赋值,通过get方法取值 3.通过set方法赋值时,如果输入的 ...

  10. 【JavaSE】throws 异常处理

    文章目录 1. 基本介绍 2. 快速入门案例 3. 注意事项和使用细节 1. 基本介绍 如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表 ...

最新文章

  1. python gil 解除_python GIL的解读
  2. Nginx-03:Nginx安装、命令、配置文件
  3. org.junit.vintage.engine.descriptor.RunnerTestDescriptor warnAboutUnfilterableRunner
  4. 表修改语法之列的增删改
  5. Python类的结构及属性的获取机制
  6. MNews 1.9 – 干净的新闻自媒体博客wordpress主题
  7. 光纤接口怎么接 图解_视频光端机怎么连接,视频光端机接法图解
  8. NVIDIA JETSON TX2上运行yolo3
  9. 泛微oa 明细数据合计
  10. iOS中几种数据持久化方案-转自简书
  11. C语言VRAM字符串平滑移动,航空数字化仪表中动画显示技术的应用
  12. 机器视觉技术在钢带缺陷检测的应用
  13. 公众号榜单 | 2020·6月公众号地区排行榜重磅发布
  14. html制作满天星,新鲜满天星如何做干花,满天星干花制作4大方法
  15. 手牵手,我们一起搭建VuePress博客
  16. 如何熟练掌握运用Delft3D建模、水动力模拟方法及在地表水环境影响评价中的实践技术
  17. WPS配置mathtype
  18. 【CES遇见人工智能】欧莱雅发微型可穿戴设备:可帮助保护你的皮肤
  19. 【TypeScript入门】TypeScript入门篇——对象
  20. xcode清理缓存_腾讯柠檬清理,真的比 CleanMyMac 好用么?

热门文章

  1. openapi回调地址请求不通过_必看!OpenAPI知识来了!
  2. 蓝桥杯 基础练习 高精度加法
  3. Jupyter更改主题和字体及远程访问
  4. Linux入门(2)_给初学者的建议
  5. 例解 autoconf 和 automake 生成 Makefile 文件[转+个人修改]
  6. [置顶] 怎么对待重复的代码
  7. python魔法函数(二)之__getitem__、__len__、__iter__
  8. 移动端车牌识别(前端识别、后端识别)的区别分析
  9. LeetCode刷题(1)
  10. 找不到java虚拟机_javabridge.jutil.JVMNotFoundError:找不到Java虚拟机