• 什么是异常?

    • 异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
  • 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的更多相关文章

  1. 分布式技术EJB3_分库架构 - 【动力节点官网】北京Java …

    分布式技术EJB3_分库架构 - [动力节点官网]北京Java … http://www.bjpowernode.com/xiazai/2220.html <程序天下--EJB JPA数据库持久 ...

  2. 001_动力节点_SpringMVC4_SpringMVC简介

    1.视频的下载地址是 下载地址:百度云盘 链接:http://pan.baidu.com/s/1ge58XW3 密码:yd5jhttp://www.java1234.com/a/javaziliao/ ...

  3. 动力节点Java培训告诉你Java线程的多功能用法

    现在的java开发可谓是八仙过海各显神通啊!遥想当下各种编程语言萎靡不振,而我Java开发异军突起,以狂风扫落叶之态,作为Java培训行业的黄埔军校,为了守护Java之未来,特意总结了一些不被人所熟知 ...

  4. [Java语言] 《struts2和spring MVC》的区别_动力节点

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  5. 动力节点 mysql 郭鑫 34道经典的面试题三

    1.第十五题 15.列出受雇日期早于其直接上级的所有员工编号.姓名.部门名称 思路一:第一步将emp a看成员工表,将emp b 看成领导表,员工表的mgr字段应该等于领导表的主键字段 mysql&g ...

  6. 动力节点 mysql 郭鑫 34道经典的面试题二

    13.有3个表S(学生表),C(课程表),SC(学生选课表) S(SNO,SNAME)代表(学号,姓名) C(CNO,CNAME,CTEACHER)代表(课号,课名,教师) SC(SNO,CNO,SC ...

  7. 动力节点 mysql 郭鑫 34道经典的面试题

    DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `DEPTNO` int(2) NOT NULL COMMENT '部门编号', `DNAME` ...

  8. Java Web 学习路线

    实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...

  9. Java编程中的美好

    java程序员如何写出"优美"代码,动力节点告诉你怎么办: 1.注释尽可能全面 对于方法的注释应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述:类的注释应该包含类的功能说 ...

  10. Java开发11个过不去的梗

    现在随着编程的普及,作为java程序猿开发的过程逐渐的受到领导的重视,无论自己的经理是能看懂,还是不能看懂,一些事项必须注意起来,不要让自己将来处于不尴不尬的境地,当然这样也方便你我他 1.不在属性文 ...

随机推荐

  1. 三、celery执行定时任务

    三.Celery执行定时任务 设定时间让celery执行一个 定时任务,product_task.py from celery_task import send_email from datetime ...

  2. Debian安装 WineHQ 安装包

    https://wiki.winehq.org/Debian_zhcn WineHQ 源仓库的密钥于 2018-12-19 改变过.如果您在此之前下载添加过该密钥,您需要重新下载和添加新的密钥并运行 ...

  3. Day2:基本的Dos命令

    打开CMD的方式 开始+系统+命令提示符(右键以管理员身份运行可拿到最高权限) Win键+R 输入 cmd打开控制台(推荐使用) 桌面上按住shift+鼠标右键,打开powershell窗口 文件搜索 ...

  4. 记录一次Oracle导入数据库失败的解决办法,最终报错:UDI-04045、ORA-04045、ORA-01775

    费了很大的工夫,终于解决了.做个记录. ******************************************************************************** ...

  5. 浅谈MYSQL的索引以及它的数据结构

    什么是索引 mysql的数据是持久化到磁盘的,写SQL查询数据也就是在磁盘的某个位置查找符合条件的数据,但是磁盘IO比起内存效率是极慢的,特别是数据量大的时候,这时候就需要引入索引来提高查询效率: 在 ...

  6. perl reverse函数

    转载至  Perl - 列表 - reverse 操作 reverse(逆转)操作将输入的一串列表(可能是数组)按相反的顺序返回. my @arr=("Head_PMA1",&qu ...

  7. tcp网络交互的理解 以及代码实现

    服务端 import socketserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.bind(("127.0. ...

  8. laravel框架部署

    每一个 Laravel 程序都会生成一个随机的 32 位长度的字符串存储在 .env 文件中的 APP_KEY 键值中, 当我们新建 Laravel 项目的时候会自动为你创建一个,只有在克隆的时候你才 ...

  9. 如何使用C#在Excel中插入分页符

    在日常办公中,我们经常会用到Excel文档来帮助我们整理数据.为了方便打印Excel工作表,我们可以在Excel中插入分页符.各种处理软件一般都会自动按照用户所设置页面的大小自动进行分页,以美化文档的 ...

  10. 【每日一题】【优先队列、迭代器、lambda表达式】2022年1月15日-NC119 最小的K个数

    描述 给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数.例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可). 数据范围: ...