一、异常

1. 异常的概念

异常,是不正常的意思 ,程序中执行过程中,出现了非正常情况,严重会导致JVM的非

正常停止。

在Java面向对象编程中,把异常视为一个对象,可以把异常定义成一个类。

产生异常就是要创建一个异常对象并抛出一个异常对象。

异常并不是指语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运

行。

2. 异常体系

异常的根类是:java.lang.Throwsable

其下有两个类:java.lang.Error和java.lang.Exception,,平时异常就是指Exception

3.图解异常处理的流程

4.异常处理

1.抛出异常throw

在Java中,提供一个throw关键字,它用来抛出异常对象

  • 创建一个异常对象 throw new 异常对象
  • 需要将这个异常通知给调用者,怎么告诉对方,通过throw就可以完成。

2.捕获异常try{}catch{}

3 声明异常throws

声明异常:将问题标识出来,给调用者,如果不对异常立即处理,你需要声明出,交给

调用者来处理。

4. finally代码块

finally:不管程序是不是出异常了,finally块中代码必须执行

无论什么时侯代码必须最终执行

一般在创建流,使用流之后 ,用来关闭流

5.一次捕获多个异常多次处理的方式

try{
read("b.txt");
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
finally {
System.out.println("不管理程序怎样,
这里都将被执行");
}

5.自定义异常实例

  1. 自定义一个编译期异常,自定义类,继承于Exception
  2. 自定义一个运行期异常类,并继承于 RuntimeException

6.面试题

面试题1: throws 和 throw的区别(记忆)

throws

  • 用在方法声明之后,跟的是异常类名
  • 表示声明异常,由该方法的调用者来处理
  • 表示出现该异常可能性,并不一定会发生异常

throw

  • 用在方法体内,跟的异常对象名(new Exxx())
  • 表示抛出异常,由方法体内的语句来处理
  • 执行throw 一定抛出了某种异常

位置不同:

throws 用方法上,后面跟的是异常类,可以跟多个;

而 throw 用在方法内,后面跟的 是异常对象。 throw new ...

功能不同:

throws 声明 异常,表示出现异常的一种可能性,并不一定会发生这些异常;throw 则是抛出

了异常,

执行 throw 则一定抛出了某种异常对象

面试题2: 编译期异常 和 运行时异常的区别(记忆)

编译期异常(checked)异常:

  • 在编译时期,就会检查,如果没有处理异常,则编译失败
  • 都是Excetion类及其子类

运行期异常(runtime)异常:

  • 在运行时期,检查异常,在编译时期不会报错
  • 都是RuntimeException类及其子类

面试题3:Java的异常体系Error和 Exception的区别和联系

2022-07-29 java之异常的更多相关文章

  1. Java并发编程:Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  2. 【转】Java ConcurrentModificationException异常原因和解决方法

    原文网址:http://www.cnblogs.com/dolphin0520/p/3933551.html Java ConcurrentModificationException异常原因和解决方法 ...

  3. 9、Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  4. Java基础 - 异常详解

    异常的层次结构 Throwable Throwable 是 Java 语言中所有错误与异常的超类. Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示 ...

  5. java的异常

    下面是我对Java异常知识的几个小总结,也算是资源回收一下 一.Java异常的知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的.比如说,你的代码少了一个分号,那么运 ...

  6. 《java中异常和错误》

    异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发 ...

  7. Atitit java的异常exception 结构Throwable类

    Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ...

  8. Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  9. java 异常

    异常简介 java中有Error和Exception Error:是程序无法处理的错误,表示运行应用程序中较严重问题.大多数错误与代码编写者执行操作无关,而表示运行时JVM出现的问题. Excepti ...

  10. Java基础——异常体系

    在Java中,异常对象都是派生于Throwable类的一个实例,Java的异常体系如下图所示: 所有的异常都是由Throwable继承而来,在下一层立即分解为两个分支,Error和Exception. ...

随机推荐

  1. Thumbnails 图片处理

    Thumbnails 是由谷歌提供的图片处理包,目前版本0.4.8. 可以简洁的实现图片的缩放.压缩.旋转.水印.格式转换等操作. 示例代码: package test;import net.coob ...

  2. 用Docker打包Python运行环境

    虽然Docker作为部署环境打包镜像的工具,和我的科研并没有直接的关系.但我觉得在项目中运用Docker来打包环境依赖也可以大大提高工作效率,于是准备专门学习一下Docker. 1. Docker基础 ...

  3. swagger在线api文档搭建指南,用于线上合适么?

    在上一篇文章中,我们讲解了什么是 api,什么是 sdk: https://www.cnblogs.com/tanshaoshenghao/p/16217608.html 今天将来到我们万丈高楼平地起 ...

  4. java 5种IO模型

    每日一句 人的痛苦会把自己折磨到多深呢? 每日一句 You cannot swim for new horizons until you have courage to lose sight of t ...

  5. Django虚拟环境详解

    Django虚拟环境之 Virtualenv 1.安装 pip install virtualenv 2.创建虚拟环境 创建虚拟环境文件夹在当前目录 virtualenv [env_name] 3.激 ...

  6. C#/VB.NET 在PDF表格中添加条形码

    条码的应用已深入生活和工作的方方面面.在处理条码时,常需要和各种文档格式相结合.当需要在文档中插入.编辑或者删除条码时,可借助于一些专业的类库工具来实现.本文,以操作PDF文件为例,介绍如何在编辑表格 ...

  7. Simple, Fast Malicious Multiparty Private Set Intersection-解读

    文本记录阅读该论文的笔记. 这是文章框架,来自视频. 介绍 本文主要解决恶意攻击下安全的多方PSI,主要用到两大技术OPPRF和OKVS,构造合谋和不合谋的协议. 基础知识 OPPRF 这部分在OPR ...

  8. LOJ数列分块 9 题解

    \(1.\) 题意 给定一个长度 \(n\) 序列,每次查询区间 \(l, r\) 的众数. \(2.\) 思路 如果边界是 \([l,r]\),\(l\) 在第 \(a\) 块,\(r\) 在第 \ ...

  9. 分享一个基于 netty 的 java 开源项目

    1.简介 中微子代理(neutrino-proxy)是一个基于 netty 的.开源的 java 内网穿透项目.遵循 MIT 许可,因此您可以对它进行复制.修改.传播并用于任何个人或商业行为. 2.项 ...

  10. Java 基础常见知识点&面试题总结(下),2022 最新版!

    你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,同步一下最新更新,希望能够帮助你. 前两篇: Java 基础常见知识点&面试题总结(上),2022 最新版 ...