IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java 异常机制 -> 正文阅读

[Java知识库]Java 异常机制

#异常
就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
当Java程序出现异常时,就会在所处的方法中产生一个异常对象;这个异常对象包括异常的类型,异常出现时程序的运行状态以及对该异常的详细描述
##异常处理
Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws
try-catch
情况1:try块中代码没有出现异常
不执行catch块代码,执行catch块后边的代码
情况2:try块中代码出现异常,catch中异常类型匹配(相同或者父类)
执行catch块代码,执行catch块后边的代码
情况3:try块中代码出现异常,catch中异常类型不匹配
不执行catch块代码,不执行catch块后边的代码,程序会中断运行
注意
出现异常后,Java会生成相应的异常对象,Java系统,寻找匹配的catch块,找到后将异常对象赋给catch块异常参数
出现异常后,try块中尚未执行的语句不会执行
出现异常后并处理后,catch块后面的语句还会执行
try-catch-finally
在try-catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行
通常在finally中关闭程序块已打开的资源,比如:文件流、释放数据库连接等。
finally块中语句不执行的唯一情况:异常处理代码中执行System.exit()退出Java虚拟机
Finally块的具体执行过程
执行try或catch中代码,遇到return/throw,先执行finally中语句块,执行return/throw

##异常分类
一、Error
Error类层次描述了Java运行时系统内部错误和资源耗尽错误,一般指与JVM或动态加载等相关的问题,如虚拟机错误,动态链接失败,系统崩溃等。这类错误是我们无法控制的,同时也是非常罕见的错误。所以在编程中,不去处理这类错误

二、Exception
所有异常类的父类,其子类对应了各种各样可能出现的异常事件。
###Exception分类
1.运行RuntimeException(uncheckedException) 可不必对其处理,系统自动检测
2.检查异常CheckedException
必须捕获进行处理,否则会出现编译错误
注意:只有Java提供了Checked异常,体现Java的严谨性,提高了Java的健壮性
声明异常throws
当CheckedException产生时,不一定立刻处理它,可以再把异常Throws出去
如果一个方法抛出多个已检查异常,就必须在方法的首部列出所有的异常,之间以逗号隔开
子类声明的异常范围不能超过父类声明范围
父类没有声明异常,子类也不能
不可抛出原有方法抛出异常类的父类或上层类

##手动抛出异常throw
Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要手工创建并抛出
在捕获一个异常前,必须有一段代码先生成异常对象并把它抛出;这个过程我们可以手工做,也可以由JRE来实现,但是他们调用的都是throw子句

##自定义异常
在程序中,可能会遇到任何标准异常类都没有充分的描述清楚的问题,这种情况下可以创建自己的异常类
从Exception类或者它的子类派生一个子类即可;习惯上,定义的类应该包含2个构造器:一个是默认构造器,另一个是带有详细信息的构造器

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:24:43  更:2021-07-10 14:26:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 4:45:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码