JavaSE----异常处理
- 异常的体系结构
* 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----异常处理相关推荐
- JavaSE——异常处理(异常简介、try-catch-finally、throws、throw)
第4节 异常处理 异常处理学习的目标: 明确说明是异常(重点) 能辨识出常见的异常及其含义(熟悉) 理解异常产生的原理(了解) 能处理异常(重点) 能够自定义异常(熟悉) 一.什么是异常? 异常是在程 ...
- JavsSE内容全链接
JavsSE内容全链接 JavaSE语言概述 JavaSE基本语法上 JavaSE基本语法下 JavaSE数组 JavaSE面向对象编程上 JavaSE面向对象编程中 JavaSE面向对象编程下 Ja ...
- JavaSE学习总结(八)—— 异常处理(Exception)
JavaSE学习总结(八)-- 异常处理(Exception) 参考文章: (1)JavaSE学习总结(八)-- 异常处理(Exception) (2)https://www.cnblogs.com/ ...
- 04 - JavaSE之异常处理
异常的概念(运行期出现的错误) java 异常是 java 提供的用于处理程序中错误的一种机制. 所谓的错误是指在程序运行的过程中发生的一些异常事件.(如:除0溢出,数组下标越界,所要读取的文件不存在 ...
- JavaSE基础知识(6)—异常和异常处理
一.异常的理解及体系结构图 1.理解 异常:程序运行过程中发生的不正常现象. java中的错误: 语法错误 运行异常 逻辑错误 2.体系图 java程序在执行过程中所发生的异常分为两类: Error: ...
- JavaSE之异常处理
1. 异常处理 意义 try-catch-finally在开发中只是将可能出现异常的一段代码包起来,当其出现异常时是以一种友好的方式体现出来,并不能真正解决代码上的错误,异常的情况下还是需要修改代 ...
- JavaSE基础笔记——不可变集合简介、Stream流体系、异常处理
1.不可变集合简介 不可变集合,就是不可被修改的集合. 集合的数据项在创建的时候提供,并且在整个生命周期中都不可改变.否则报错. 为什么要创建不可变集合? 如果某个数据不能被修改,把它防御性地拷贝到不 ...
- 【JavaSE】 try-catch 异常处理
文章目录 try-catch 异常处理 1. try-catch 方式处理异常说明 2. try-catch 方式处理异常-快速入门 3. try-catch 方式处理异常-注意事项 4. try-c ...
- Java学习的第三十天(JavaSE结束篇02_学生管理系统(集合+异常处理+对象流+递归输入判断))
一.学生管理系统的业务需求 1.需要有一个学生类,它有四个成员变量:ID 姓名 性别 班级 2.成员变量必须私有化,然后只能通过set方法赋值,通过get方法取值 3.通过set方法赋值时,如果输入的 ...
- 【JavaSE】throws 异常处理
文章目录 1. 基本介绍 2. 快速入门案例 3. 注意事项和使用细节 1. 基本介绍 如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表 ...
最新文章
- python gil 解除_python GIL的解读
- Nginx-03:Nginx安装、命令、配置文件
- org.junit.vintage.engine.descriptor.RunnerTestDescriptor warnAboutUnfilterableRunner
- 表修改语法之列的增删改
- Python类的结构及属性的获取机制
- MNews 1.9 – 干净的新闻自媒体博客wordpress主题
- 光纤接口怎么接 图解_视频光端机怎么连接,视频光端机接法图解
- NVIDIA JETSON TX2上运行yolo3
- 泛微oa 明细数据合计
- iOS中几种数据持久化方案-转自简书
- C语言VRAM字符串平滑移动,航空数字化仪表中动画显示技术的应用
- 机器视觉技术在钢带缺陷检测的应用
- 公众号榜单 | 2020·6月公众号地区排行榜重磅发布
- html制作满天星,新鲜满天星如何做干花,满天星干花制作4大方法
- 手牵手,我们一起搭建VuePress博客
- 如何熟练掌握运用Delft3D建模、水动力模拟方法及在地表水环境影响评价中的实践技术
- WPS配置mathtype
- 【CES遇见人工智能】欧莱雅发微型可穿戴设备:可帮助保护你的皮肤
- 【TypeScript入门】TypeScript入门篇——对象
- xcode清理缓存_腾讯柠檬清理,真的比 CleanMyMac 好用么?
热门文章
- openapi回调地址请求不通过_必看!OpenAPI知识来了!
- 蓝桥杯 基础练习 高精度加法
- Jupyter更改主题和字体及远程访问
- Linux入门(2)_给初学者的建议
- 例解 autoconf 和 automake 生成 Makefile 文件[转+个人修改]
- [置顶] 怎么对待重复的代码
- python魔法函数(二)之__getitem__、__len__、__iter__
- 移动端车牌识别(前端识别、后端识别)的区别分析
- LeetCode刷题(1)
- 找不到java虚拟机_javabridge.jutil.JVMNotFoundError:找不到Java虚拟机