Java基础总结--异常处理机制
----异常的概述-----
1.异常,就是不正常的现象,可能发生在编译期间也可能发生在运行期间
2.可能会出现不同的异常,进而在Java中对其描述封装为类--在这些异常类中抽取其共性的东西(异常发生的位置,名称等)--形成了异常体系的根类Throwable(可以抛出的异常)
3.Throwable下面分为两大子类:Exception(可以进行处理) Error(严重情况,必须对程序修改)
4.关于异常体系的一些总结
* 异常的子类后缀名是以其父类名确定的,分别以Exception、Error结尾
* 异常类的构造方法有两个,无参数、有字符串的(描述异常信息)
* 异常类的方法都是从其父类Throwable中继承的
* 异常体系的出现将异常发生与异常的处理分开,使得代码具有阅读性
-----异常处理的具体过程描述------两种情况
1.对于Java已经定义的异常类其过程如下:
eg:前提调用情况 JVM掉用main-->main调用method(method发生下标越届)
main进栈-->mthod进栈-->执行到异常发生的地方且JVM自动识别出该异常并封装该对象
将其抛出throw new IndexOutOfBoundsException();
将异常对象抛给调用者main,method出栈,main接受到异常对象并不处理
将该异常对象传递给JVM,main出栈JVM打印出异常对象的相关信息(类型,发生位置)
注意事项:
发生异常后就不会按照正常流程执行程序,而是会按照异常处理执行程序
异常具有能够结束函数执行的功能--原因是问题发生所以停止
异常信息的打印:按照函数出栈的顺序打印
异常的抛出,会抛出给调用者,调用者如果不处理,就会继续向上直到JVM,打印异常信息,此时程序就是真正的停止
除了JVM自动识别抛出异常,当然也可以手动的抛出异常对象
异常一般的处理流程:问题方法发生异常--出栈--调用者处理/交给上层处理/JVM
真实开发不会直接打印异常的信息,而是会将异常信息全部存储在一个文件里面--日志,开发者会对日志进行定期的查看,并集中的根据异常的情况,对程序进行修改和维护
2.对于Java中未进行定义的异常事件可以进行自定义异常
----怎样进行自定义异常----
必须继承异常体系,这样才有资格被抛出,进而被JVM识别
对于发生异常的方法本身必须在函数上进行声明异常对象,在函数内部对异常对象进行抛出
对于调用者可以有两种处理方式(假设该异常是必须检验的异常):
*声明异常,自己不进行处理--继续向上抛给JVM
*,接收异常对象,处理异常
----关于Exception类子类的划分----两大类
* RuntimeException及其子类:编译器不检测的异常,可以不声明,编译也可以通过
* 其他的Excetion异常类的子类:编译器必须检测的异常,必须进行声明,否则编译不通过
----关于自定义异常类继承谁为其父类-----
* 因为调用者导致以及其他情况下引起的内部状态改变的时候应该定义为运行时异常,通常会让调用者对代码进行修改
* 其他的情况一般就直接定义为Exception类的子类--可以提前的给出相应的解决办法
* 以后开发中更多遇见的是运行时异常(正在运行然后中断),而Error直接就是JVM无法工作
----throws throw区别----
* throws用于在方法上进行声明异常对象,可以同时声明多个异常对象
* throw 用于在方法内部抛出异常对象,一次只可以抛出一个异常对象
-----异常的捕获-----
1.利用try{可能发生异常的代码;}catch(异常类型 异常名){异常处理过程}finally{一定会被执行的语句}结构进行异常处理
2.异常处理的基本原则
* 函数内容如果抛出必检验的异常,函数必须先声明,在利用try-catch处理/继续声明抛出
* 对于发生的异常可以处理用catch,不可以处理就throws向调用者说明
* 一个功能抛出多个异常,必须用对应的catch块进行接收异常对象并做出处理(一般先捕获小的异常再捕获大的异常),实际过程中并不会进行超出异常对象个数的捕获
* finally语句作用--一定会被执行的代码
用于数据库连接,查询,关闭资源连接等
* 假如调用者接收到异常对象也处理不了,可以在catch中继续抛出该异常对象给上级
----异常处理的注意事项------
1.子类在覆盖父类方法时候,父类方法如果抛出异常,子类重写的方法只能抛出父类抛出的异常类或其子类
2.父类如果抛出多个异常,子类只能抛出父类异常类个数的子集
3.父类方法没有发生异常,覆盖的时候子类只能自己处理,不能向外抛出异常
Java基础总结--异常处理机制的更多相关文章
- 黑马程序员——JAVA基础之异常处理机制
------- android培训.java培训.期待与您交流! ---------- 异常:就是程序在运行时出现不正常情况. 异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式 ...
- Java基础(四)-异常处理机制及其设计
本篇主要是记录自己所理解的Java异常处理机制(基于jdk1.7)以及怎么去处理和设计异常.还记得当初学习Java异常这块的时候都没怎么注意它的用途,以为就是简单的处理下异常,我避免程序出现这样错误就 ...
- Java基础之异常处理机制
在Java中,异常分为编译时异常和运行时异常. 编译时异常又叫编译时被监测的异常:在程序编译过程中监测到非运行时异常的异常,出现该异常要么向上抛出,要么捕获处理.运行时异常(runtimeExcept ...
- Java 中的异常处理机制
生活中的异常: 不能够完整而顺利的完成一些工作 根据不同的异常进行相应的处理,而不会就此终端我们的生活 引出: 异常处理: 方式: 1.选择结构(逻辑判断)避免 demo:if逻辑处理异常 im ...
- Java基础:异常机制
最近开始了找工作的面试,在面试过程中,面试官问了关于Java当中的异常处理机制,一直以来,无论写代码还是看书,自己对异常处理这一块就没有很好的重视过,对它的认知也仅仅停留在通过Try-catch去进行 ...
- 【Java基础】异常处理
异常处理 异常概述 在 Java 语言中,将程序执行中发生的不正常情况称为"异常",但是开发过程中的语法错误和逻辑错误不是异常. 在执行过程中所发生的异常事件可分为两类: Erro ...
- Java中的异常处理机制的简单原理和应用?
程序运行过程中可能出现各种"非预期"情况,这些非预期情况可能导致程序非正常结束. 为了提高程序的健壮性,Java提供了异常处理机制: try { s1... s2... s3... ...
- Java中的异常处理机制《》
异常机制已经成为判断一门编程语言是否成熟的标准,异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性. Java异常机制主要依赖于try.catch.finall ...
- 16、java中的异常处理机制
异常:就是程序在运行时出现不正常情况.异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述.并封装成对象. 其实就是java对不正常情况进行描述后的对象体现. 对于问题的划 ...
随机推荐
- java向前引用
根据看书和看得文章,引出了一个关于"向前引用"的问题: public class InstanceInitTest { static { // { a = 6; System.ou ...
- 业余草通告CSDN博客用户zhang__ao非法转载文章的公告
今天早上有粉丝给我反馈,CSDN的一位用户大量非法的转载了我的个人网站:业余草(www.xttblog.com)上的大量文章.现一对该用户转载业余草上网站上的所有文章进行了举报! 从上图中可以看出,该 ...
- MySql 中文乱码解决办法
mysql存入的中文数据乱码,可能有这两个原因 原因一 : 数据源配置和mysql字符集编码不符,或数据源配置没有设置字符集 解决方案:在数据源配置添加字符集 useUnicode=true& ...
- 最详细的PHP flush()与ob_flush()的区别详解
buffer ---- flush()buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页.主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区 ...
- 月亮之眼_KEY
[问题描述] 吉儿是一家古董店的老板娘,由于她经营有道,小店开得红红火火.昨天,吉儿无意之中得到了散落民间几百年的珍宝--月亮之眼.吉儿深知"月亮之眼"价值连城:它是由许多珍珠相连 ...
- C "right-left" 从左到右
葵花宝典:http://ieng9.ucsd.edu/~cs30x/rt_lt.rule.html C混带代码大赛
- java数据库编程之高级查询
第三章:高级查询(-) 3.1:修改表 3.1.1:修改表 语法: Alter table <旧表名> rename [ TO] <新表名>; 例子:Alter table ` ...
- (原)怎样解决python dataframe loc,iloc循环处理速度很慢的问题
怎样解决python dataframe loc,iloc循环处理速度很慢的问题 1.问题说明 最近用DataFrame做大数据 处理,发现处理速度特别慢,追究原因,发现是循环处理时,loc,iloc ...
- 浅谈Java接口
接口(英文:Interface)是Java中非常重要的内容,初学的时候可能感受不深,但是在做项目的时候,对面向接口编程的运用就变得尤为重要,不过这是后话了.现在先讨论假如是刚刚接触接口这个概念,该怎么 ...
- 使用beanstalkd实现定制化持续集成过程中pipeline
持续集成是一种项目管理和流程模型,依赖于团队中各个角色的配合.各个角色的意识和配合不是一朝一夕能练就的,我们的工作只是提供一种方案和能力,这就是持续集成能力的服务化.而在做持续集成能力服务化的过程中, ...