黑马程序员 java中关于异常的学习日志
-------------------android培训、 java培训、期待与您交流!-------------------
java中异常的总结
首先,什么是异常呢?简而言之,异常是对问题的描述,将问题封装成对象。
异常体系:
Throwable
|------Error
|----- ....
|----- ....
|------Exception
|------RuntimeException
|------IOException
|--------.....
|--------.....
Throwable是所用异常的父类,其中有两个子类Error和Exception。顾名思义,Error是严重异常,即错误。而Exception是一般异常。运行时异常(RuntimeException)时Exception常见异常。做程序尽量让异常发生在编译时期,这样便于程序员检查修改。
异常体系的特点:异常体系中的所有类以及建立的对象都具有可抛性,也就是所可以被throw或throws关键字操作。只有异常体系具备这个特点。
throw和throws的用法如下:throw定义在方法内,用于抛出异常对象;throws定义在方法上用于抛出异常类,可以抛出多个异常,用逗号隔开。当方法内用throw抛出异常对象,并未进行try处理,必须要在方法上声明,否则编译失败。RuntimeException除外。也就是说,方法内如果抛出RuntimeException异常,方法上可以不用声明。
如果方法声明了异常,调用者需要进行处理,处理方式是:再抛或者try处理。
异常用两种,编译时被检查异常和运行时异常(编译时不检查)。编译时被检查异常在编译时,如果没有处理(抛或try),编译将失败。该异常被标识,代表可以被处理。运行时异常在编译时,不需要处理,编译器不检查。该异常发生时,一般不处理,让程序停止,需要对代码进行修正。
异常处理语句:
try
{
//需要被检查的代码;
}
catch()
{
//处理异常代码;
}
finally
{
//一定会执行的代码;
}
他们有三种结合方式:
第一种:
try
{}
catch()
{
}
第二种:
try
{
}
finally
{
}
第三种:
try
{
}
catch()
{
}
finally
{
}
finally中通常定义关闭资源代码。因为资源必须要释放。finally只有一种情况执行不到,那就是finally在System.exit(0)后。
自定义异常:
自定义一个类,继承Exception或者RuntimeException。该类就具备了可抛性,并具备了操作异常的共性方法。
当要定义自定义异常的信息时,可以使用父类已经定义好的功能,把异常信息传递给父类的构成方法。
代码如下:
class MyException extends Exception
{
MyException(String message)
{
super(message);
}
}
自定义异常:按照java的面向对象思想,将程序中出现的特有问题进行封装。
异常的好处:1、将问题进行封装;2、将正常流程代码和问题处理代码相分离。方便阅读。
异常的处理原则:
1、处理方式有两种:try或throws
2、调用到抛出异常的功能时,抛出几个,就处理几个。可能出先现一个try对应多个catch的情况
3、出现多个catch时,父类的catch要放在最下面。
4、catch内,需要定义针对性的处理方式,不要简单的定义printStackTrace或者输出语句,也不要不写。
5、当捕获到的异常,本功能处理处理不了时,可以继续在catch中抛出
代码如下:
try
{
throw new AException();
}
catch(AException e)
{
throw e;
}
6、如果该异常处理不了,但并不属于该功能出现的异常,可以将异常转换后,再抛出和该功能的异常。或者异常可以处理
但需要将异常产生的和本功能相关的问题提供出去,让调用者知道,并处理,也可以将捕获到的处理后,转换新都异常。
代码如下:
try
{
throw new AException();
}
catch(AException e)
{
//对AException处理;
throw new BException();
}
异常的注意事项:
在子父覆盖时;
1、子类抛出的异常必须是父类的异常或子集。
2、如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try,不能抛。
-------------------android培训、 java培训、期待与您交流!-------------------
黑马程序员 java中关于异常的学习日志相关推荐
- 黑马 程序员——Java基础---流程控制
黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...
- 黑马程序员Java教程学习笔记(五)
学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...
- 黑马程序员Java零基础视频教程_下部(P52-P134)
黑马程序员Java零基础视频教程_下部(P52-P134) 1. 异常 1.1 异常体系介绍 1.2 编译时异常和运行时异常 1.3 异常在代码中的两个作用 1.4 JVM虚拟机默认处理异常的方式 1 ...
- 黑马程序员Java零基础视频教程_上部(P1-P80)
黑马程序员Java零基础视频教程_上部(P1-P80) 1. Java入门 1.1 Java学习介绍 1.2 Java人机交互 1.2.1 常用CMD命令 2. Java基础学习 2.1 Java入门 ...
- 黑马程序员——Java字符流、字节流IO流
黑马程序员--Java字符流.字节流Io流 ---------------------- <a href="http://www.itheima.com"target=&qu ...
- 黑马 程序员——Java基础---IO(下)
黑马程序员--Java基础---IO(下) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供 ...
- 2023年黑马程序员Java学习路线图
2023年Java学科免费学习资源放送40+套课程,超过600小时的内容! 在过去的一年里,为了帮助更多人线上充电,学会更多技能,黑马程序员举办了 150+ 场免费直播公开课,新增精品视频教程 80+ ...
- 黑马程序员__关于自己的一些学习死角的再学习(基于老毕的java基础视频)
----------------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+A ...
- 黑马程序员 JAVA WEB 第三节 MYSQL 约束
这是阿锃总结的第三节黑马程序员JAVA WEB视频的MYSQL约束部分的笔记.希望可以帮助跟我一样正在学习Java web的同学们.我们一起进步. b_d 若果有同学也想学习黑马程序员Java w ...
最新文章
- Linux 安装图形界面及远程连接
- 哪种营销方法效果最差_网络营销推广中如何监控评测网络效果?
- 合工大五套卷_2021森哥五套卷(五)
- js中同名的函数的调用情况
- RabbitMQ/pika模块
- Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini和my.ini文件以及服务无法启动的解决办法以及修改初始密码的方法
- IDEA 2017.3.3 Mybatis Plugin 3.154 安装和破解方法(Windows系统)
- idea运行报Command line is too long
- amd核芯显卡控制面板自定义分辨率_显卡是哪个
- php如何输出换行,PHP怎样才能让输出的内容自动换行
- 微信能上但浏览器无法上网
- MATLAB彩色图片的处理
- Arduino 用4位共阴数码管造一个计数器
- GPS定位详解——涉及GPS版本变化、定位获取失败等常见问题。
- Matlab柱状图 不同颜色
- mysql的where子查询_MySQL where型子查询
- jQuery如何根据元素值删除数组元素
- 【转】2022年web前端开发学习路线图
- 【高数】高数第四章节——不定积分换元积分分部积分
- phpcms9.6 ueditor_PHPCMS v9.5.6整合UEditer1.4.3详细教程
热门文章
- 有向图的邻接矩阵和邻接表画法
- Q妹教你赚外快:如何把微信聊天记录写入文件
- 大d是什么梗_黑社会2粤语-请问粤语中“大D”是啥意思?黑社会2里有一 – 手机爱问...
- java.lang.IllegalArgumentException的解决方法
- 十个Python初学者常犯的错误
- WIN7下安装Oracle 10g 的详细过程以及有关问题的解决(转)
- 自贸港首家公务机公司海航金鹿商务正式启动运营
- 网关服务器性能,服务网关API路由导致的性能问题分析
- SSDHDD混装换一块SSD(迁移系统与资料不重装)
- c语言程序学生籍贯信息记录,c语言程序学生籍贯信息记录簿设计.doc