动力节点——day07
- 什么是异常?
- 异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
- Java中异常的存在形式?
- 异常在java中以类的形式存在,每一个异常类都可以创建异常对象
- 异常的继承结构图

- 编译时异常和运行时异常,都是发生在运行阶段,编译阶段异常不会发生,编译时异常因为什么而得名?
- 因为编译时异常需要在编译阶段预先处理,如果不处理编译器报错,因此而得名,所有异常都是在运行阶段发生的,因为只有程序运行阶段才可以new对象,因为异常的发生就是new异常对象
- 编译时异常一般发生的概率较高:出门可能会下雨,所以要带一把伞不然会发生生病异常
- 运行时异常一般发生的概率较低:出门可能被石头砸到,要带个头盔
- 编译时异常又被称为受检异常或受控异常。运行时异常又被称为未受检异常或非受控异常。
- Java语言中对异常的处理有两种方式:
- 第一种方式:在方法声明的位置上,使用throws关键字(异常上抛)
- 第二种方式:使用try-catch进行异常的捕捉(异常捕捉)
- 注意:异常发生之后,如果一直上抛,最后抛给了main方法,main方法继续向上抛,抛给了调用者JVM,JVM知道这个异常发生,只有一个结果,终止Java程序的执行
- 如果对异常进行处理,后面代码还会继续执行 如果把异常直接抛出,后面代码将不会在继续执行,如果写在try语句块中,出现异常,异常后面的代码不会执行
- throw是手动抛出一个异常,throws是方法抛出一个异常
- 在方法上抛出一个异常时,只有在子类执行失败从而创建出一个异常对象才会执行,或者在方法中直接抛出一个异常对象。如果执行正确则不会产生异常对象,从而也不会抛出异常
- 深入try...catch
- catch后面的小括号的类型可以是具体的异常类型,也可以是异常类型的父类型
- catch写多个的时候,建议catch 的时候,精确的一个一个处理,这样有利于程序的调试
- catch可以写多个,但是顺序必须按照从上到下,从小到大排列原则
- JDK8的新特性,可以将多个异常通过逻辑或写在一个catch中
- 异常对象有两个非常重要的方法:
- 获取异常简单的描述信息
- String msg=exception.getMessage();
- 打印异常追踪的堆栈信息
- exception.printStackTrace();
- 获取异常简单的描述信息
- 关于try中的finally子句
- 在finally子句中的代码是最后执行的,并且是一定执行的,即使try语句中的代码出现了异常。
- finally子句必须和try一起出现,不能单独编写
- finally子句通常使用在那些情况
- 通常在finally语句块中完成资源的释放/关闭
- 因为finally中的代码比较有保障
- 即使try语句块中的代码出现异常,finally中的代码也会正常执行
- try和finally,没有catch可以吗?
- try不能单独使用
- try和finally可以联合使用
- 有三种情况:try-catch、try-catch-finally、try-finally
- 当java程序在执行try块、catch块时如果遇到了return或者throw时,这两个语句都会导致该方法立即结束,但是系统在执行这两个语句时并不会结束该方法,而是去寻找该异常处理流中是否包含了finally语句块,如果没有finally块,则程序会立即执行return或者throw语句,方法终止。如果有finally语句块,系统会开始立即执行finally语句块,只有当finally语句块中的代码被执行完了之后,系统才会回来再次执行try块或者catch块中的return或throw语句,但是如果finally块中也有return或者throw这样能是方法结束的语句,则finally块就会立即结束该方法,系统将不会跳回去执行try块或者catch中的任何语句。
- 异常也可以自己编写,编译时异常要继承Exception(如果事件发生概率较高),运行时异常要继承RuntimeException(如果事件发生概率较低)
- 在进行方法的覆盖时,访问权限修饰符只能更高,抛出异常只能更少
- 类在强制转换过程中,如果是类转换成接口类型,那么类和接口之间不需要存在继承关系,也可以转换。
动力节点——day07的更多相关文章
- 分布式技术EJB3_分库架构 - 【动力节点官网】北京Java …
分布式技术EJB3_分库架构 - [动力节点官网]北京Java … http://www.bjpowernode.com/xiazai/2220.html <程序天下--EJB JPA数据库持久 ...
- 001_动力节点_SpringMVC4_SpringMVC简介
1.视频的下载地址是 下载地址:百度云盘 链接:http://pan.baidu.com/s/1ge58XW3 密码:yd5jhttp://www.java1234.com/a/javaziliao/ ...
- 动力节点Java培训告诉你Java线程的多功能用法
现在的java开发可谓是八仙过海各显神通啊!遥想当下各种编程语言萎靡不振,而我Java开发异军突起,以狂风扫落叶之态,作为Java培训行业的黄埔军校,为了守护Java之未来,特意总结了一些不被人所熟知 ...
- [Java语言] 《struts2和spring MVC》的区别_动力节点
1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...
- 动力节点 mysql 郭鑫 34道经典的面试题三
1.第十五题 15.列出受雇日期早于其直接上级的所有员工编号.姓名.部门名称 思路一:第一步将emp a看成员工表,将emp b 看成领导表,员工表的mgr字段应该等于领导表的主键字段 mysql&g ...
- 动力节点 mysql 郭鑫 34道经典的面试题二
13.有3个表S(学生表),C(课程表),SC(学生选课表) S(SNO,SNAME)代表(学号,姓名) C(CNO,CNAME,CTEACHER)代表(课号,课名,教师) SC(SNO,CNO,SC ...
- 动力节点 mysql 郭鑫 34道经典的面试题
DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `DEPTNO` int(2) NOT NULL COMMENT '部门编号', `DNAME` ...
- Java Web 学习路线
实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...
- Java编程中的美好
java程序员如何写出"优美"代码,动力节点告诉你怎么办: 1.注释尽可能全面 对于方法的注释应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述:类的注释应该包含类的功能说 ...
- Java开发11个过不去的梗
现在随着编程的普及,作为java程序猿开发的过程逐渐的受到领导的重视,无论自己的经理是能看懂,还是不能看懂,一些事项必须注意起来,不要让自己将来处于不尴不尬的境地,当然这样也方便你我他 1.不在属性文 ...
随机推荐
- $_SERVER['HTTP_USER_AGENT']:在PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息
在PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息. 我机器:操作系统:WIN7旗舰版 64操作系统 以下为各个浏览器下$_SERVER['HTT ...
- 题解 P4058 [Code+#1]木材
前言 这什么题啊,不就是个二分答案我从65到100都经历了一遍--(瞬间气哭) \(\sf {Solution}\) 题目理解起来不难的,大意就懒得写了. 一眼二分答案. 此题属于在形如 \(\{0, ...
- 实验6:开源控制器实———RYU
一.实验目的 1.能够独立部署RYU控制器: 2.能够理解RYU控制器实现软件定义的集线器原理: 3.能够理解RYU控制器实现软件定义的交换机原理. 二.实验环境 Ubuntu 20.04 Deskt ...
- MYSQL数据库的导出和导入
一.连接服务器查看数据库 使用连接工具(xshell6等)连接到数据库所在服务器,执行命令查询需要导出的数据库 1.输入数据库管理员账号密码进入控制台:mysql -uroot -p123456 ...
- docker清空网络配置
docker 网络 故障 相同的 ip 绑定给了 两个 网卡, 需要 清空 网络 ip addr | grep 10.79 inet 10.79.106.1/24 brd 10.79.106.255 ...
- ui自动化测试数据复原遇到的坑——1、hibernate输出完整sql
公司老项目使用SSH+informix+weblogic+IE开发,我们要做ui自动化测试,其中的测试数据复原,我打算通过hibernate输出sql,然后把插入.更新的sql改为delete或upd ...
- ironic组件硬件自检服务——ironic-inspector
介绍 ironic-inspector是一个用于硬件自检的辅助型服务,它可以对被ironic组件管理的裸金属节点进行硬件自检,通过在裸金属节点上运行内存系统,发现裸金属节点的硬件信息,例如CPU数量和 ...
- Go语言核心36讲04
我们已经知道,环境变量GOPATH指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件. 这里的源码文件又分为三种,即:命令源码文件.库源码文件和测试源码文件,它们都有着不同的 ...
- 【Advanced Installer】打包winfrom程序出现您没有任何数字签名的实用程序。请安装平台 SDK。错误
出现这个问题的原因是设置了磁铁,此功能只会在win8.1上有效.也就是开始菜单里面的磁铁图 只需要把这个删除掉就可以解决了
- C温故补缺(五):main函数的参数
main()的参数 main()函数的参数,用于在外部执行时传入参数,类似windows的bat脚本或linux的sh脚本.在bat脚本中传入参数,用%接收.sh脚本的参数用$接收. c语言编译成可执 ...