• 什么是异常?

    • 异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
  • 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. LabVIEW开放神经网络交互工具包【ONNX】,大幅降低人工智能开发门槛,实现飞速推理

    前言 前面给大家介绍了自己开发的LabVIEW AI视觉工具包,后来发现有一些onnx模型无法使用opencv dnn加载,且速度也偏慢,所以就有了今天的onnx工具包,如果你想要加载更多模型,追求更 ...

  2. 第一阶段:linux运维基础·1

    1. 服务器的主要硬件是?以及其作用是? cpu 相当于人体的大脑,负责计算机的运算和控制 内存 解决cpu与硬盘之间速度不匹配的问题 磁盘 永久存放数据的存储器 主板 直接或间接的将所有的设备连接在 ...

  3. Dubbo-聊聊通信模块设计

    前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...

  4. 对于函数极限存在的充要条件“lim f(x)=A互推f(x)=A+a(x) lim a(x)=0”补充解释

    毫无疑问,这个定义适用于任何函数极限,诺f(x)有去间断点的时候,a(x)也为可去间断点函数. 例:

  5. Pinely Round 1 (Div. 1 + Div. 2)

    比赛链接 A 题意 构造两个长为 \(n\) 排列,使得两排列有长为 \(a\) 公共前缀和长为 \(b\) 的公共后缀. 题解 知识点:构造. 注意到,当 \(a+b\leq n-2\) 时,中间段 ...

  6. C温故补缺(十四):内存管理

    内存管理 stdlib库中有几个内存管理相关的函数 序号 函数和描述 1 void *calloc(int num, int size);在内存中动态地分配 num 个长度为size 个字节 的连续空 ...

  7. c++ *和& 指针,取内容,别名,取地址

    *前面有类型符时为定义指针 &前面有类型符时为定义引用变量(别名) (int ,float,long,double,char等 ) *p:定义xx类型的指针 int *p 整型指针,char ...

  8. 浏览器直接修改网站的js代码

    1.按下F12打开控制台,找到源代码,然后是替换 2.在本地创建一个文件夹,会提示风险,点击允许 3.再找到你要修改的js文件代码,右击选择保存并覆盖 这样代码会保存到你刚刚创建的本地文件夹当中,接着 ...

  9. SpringCloud Alibaba(七) - JWT(JSON Web Token)

    原文链接: JWT详解:https://blog.csdn.net/weixin_45070175/article/details/118559272 1.什么是JWT 通俗地说,JWT的本质就是一个 ...

  10. C++编程笔记(QT)

    目录 入门基础 模态对话框 消息提示框(messagebox) 文件和目录 字体选择框 输入对话框 进度条 工具栏 控件布局 Windows托盘案例 控件 button 下拉菜单按钮 `radioBu ...