一、异常

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. 将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中

    学习内容:数据导入,要求将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中: ①hive建表:test1 create table test1 (InvoiceNo String, Stoc ...

  2. form表单与css选择器

    目录 form表单 action属性 input标签 lable标签 select标签 textarea标签 补充 网络请求方式 CSS简介 CSS基本选择器 组合选择器 属性选择器 分组与嵌套 伪类 ...

  3. python之模块(hashlib、logging)

    hashlib模块 加密的概念 加密,是以某种特殊的算法改变原有的数据,当其他人获得数据时,也无法了解数据的内容.简单的来说,就是将明文(人看得懂)数据通过一些手段变成密文数据(人看不懂),密文数据的 ...

  4. yolov1学习笔记

    yolov1学习笔记 yolov1将目标检测归为一个回归问题,具有real-time的特点.局限性是:对于群体性的小目标检测效果很差. 论文概括 本文重新构造目标检测作为一个回归问题. 直接输入图像到 ...

  5. 聚类--DBSCN

    1.什么是DBSCN DBSCAN也是一个非常有用的聚类算法. 它的主要优点:它不需要用户先验地设置簇的个数,可以划分具有复杂形状的簇,还可以找出不属于任何簇的点. DBSCAN比凝聚聚类和k均值稍慢 ...

  6. CabloyJS自带工作流引擎的文档清单

    文档清单 CabloyJS自带工作流引擎文档已经整理出来,欢迎大家围观.拍砖 介绍 介绍 演示:CMS审批工作流 单元测试用例集 流程定义 基本概念 JSON规范 listener规范 listene ...

  7. Java编码安全

    目录 Java编码安全 数据校验 规则1.1:校验跨信任边界传递的不可信数据 规则1.2:禁止直接使用不可信数据来拼接SQL语句 规则1.4:禁止直接使用不可信数据来记录数据 规则1.6:验证路径前将 ...

  8. BUUCTF-[BJDCTF2020]你猜我是个啥

    [BJDCTF2020]你猜我是个啥 下载压缩包提示打不开,16进制直接拉最下方可以查看到flag flag{i_am_fl@g}

  9. SAP Tree editor(树形结构)

    SAP List Tree 效果 源代码 *&---------------------------------------------------------------------* *& ...

  10. C++库的随机数生成

    C++库为我们提供了很多生成随机数的方法. 使用C的随机数生成法 先学过C语言,或者仅仅用C++做算法的人.对rand()是非常熟悉了.这个函数没有参数,生成0到RAND_MAX的随机数(RAND_M ...