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对不正常情况进行描述后的对象体现. 对于问题的划 ...
随机推荐
- 201521123026 《java程序设计》 第九周学习总结
1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) PTA提交结果: 运行结果截图: 1.2 ...
- 多线程:多线程设计模式(二):Future模式
一.什么是Future模型: 该模型是将异步请求和代理模式联合的模型产物.类似商品订单模型.见下图: 客户端发送一个长时间的请求,服务端不需等待该数据处理完成便立即返回一个伪造的代理数据(相当于商品订 ...
- Thinkphp3.2结合phpqrcode生成二维码(含Logo的二维码),附案例
首先,下载phpqrcode,将其解压到项目ThinkPHP\Library\Vendor目录下.Index_index.html(模板可自行配置) <form action="{:U ...
- 通过Xshell登录远程服务器实时查看log日志
主要想总结以下几点: 1.如何使用生成密钥的方式来登录Xshell连接远端服务器 2.在远程服务器上如何上传和下载文件(下载log文件到本地) 3.如何实时查看log,提取错误信息 一. 使用生成密 ...
- 解决linux AMR转MP3出现转码成功却无法播放的问题
根据帖子:http://blog.csdn.net/z313731418/article/details/50218341 的提示,在linux安装ffmpeg,确实在linux下使用命令可以将am ...
- struts1.3学习
一.基本配置 参考博客 项目结构 web.xml <!-- struts配置 --> <servlet> <servlet-name>action</serv ...
- 进入css3动画世界(一)
其实我做css3动画也没有多久,这篇文章目标人群是css3动画的新手,不喜勿喷. 分类 目前我接触到的css3动画有2类:一种是transition的,另一种是@keyframes的. 两者的区别就是 ...
- Python dict operation introduce
字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: d = ...
- 《HelloGitHub》第 18 期
<HelloGitHub>第 18 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程. ...
- JSP入门 文件上传
commons-fileupload public void save(HttpServletRequest request,HttpServletResponse response) throws ...