----异常的概述-----
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基础总结--异常处理机制的更多相关文章

  1. 黑马程序员——JAVA基础之异常处理机制

    ------- android培训.java培训.期待与您交流! ---------- 异常:就是程序在运行时出现不正常情况. 异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式 ...

  2. Java基础(四)-异常处理机制及其设计

    本篇主要是记录自己所理解的Java异常处理机制(基于jdk1.7)以及怎么去处理和设计异常.还记得当初学习Java异常这块的时候都没怎么注意它的用途,以为就是简单的处理下异常,我避免程序出现这样错误就 ...

  3. Java基础之异常处理机制

    在Java中,异常分为编译时异常和运行时异常. 编译时异常又叫编译时被监测的异常:在程序编译过程中监测到非运行时异常的异常,出现该异常要么向上抛出,要么捕获处理.运行时异常(runtimeExcept ...

  4. Java 中的异常处理机制

    生活中的异常:  不能够完整而顺利的完成一些工作 根据不同的异常进行相应的处理,而不会就此终端我们的生活 引出:  异常处理: 方式:  1.选择结构(逻辑判断)避免 demo:if逻辑处理异常 im ...

  5. Java基础:异常机制

    最近开始了找工作的面试,在面试过程中,面试官问了关于Java当中的异常处理机制,一直以来,无论写代码还是看书,自己对异常处理这一块就没有很好的重视过,对它的认知也仅仅停留在通过Try-catch去进行 ...

  6. 【Java基础】异常处理

    异常处理 异常概述 在 Java 语言中,将程序执行中发生的不正常情况称为"异常",但是开发过程中的语法错误和逻辑错误不是异常. 在执行过程中所发生的异常事件可分为两类: Erro ...

  7. Java中的异常处理机制的简单原理和应用?

    程序运行过程中可能出现各种"非预期"情况,这些非预期情况可能导致程序非正常结束. 为了提高程序的健壮性,Java提供了异常处理机制: try { s1... s2... s3... ...

  8. Java中的异常处理机制《》

    异常机制已经成为判断一门编程语言是否成熟的标准,异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性. Java异常机制主要依赖于try.catch.finall ...

  9. 16、java中的异常处理机制

    异常:就是程序在运行时出现不正常情况.异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述.并封装成对象. 其实就是java对不正常情况进行描述后的对象体现. 对于问题的划 ...

随机推荐

  1. 201521123118《java程序与设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容 2. 书面作业 1. 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synch ...

  2. MyBatis框架(一)

    MyBatis介绍: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  3. 自动化测试之 seleniumIDE,Selenium1,selenium2和testNG入门

    由于前期三个月公司的项目一直在改需求阶段,一直是手动测试,现在项目雏形以及基本页面功能都确定下来,为了不让自己陷入天天测同一功能的无限循环中,故开始自动化测试的学习之路,也为自己以后的发展铺铺路. 一 ...

  4. Linux中组 与 用户的管理

    在linux中建立组的指令是 groupadd 组名 相应的,删除组的指令: groupdel 组名 查看自己用户的组: groups 一个用户可以在多个组里面,用这个命令可以将用户添加到组: add ...

  5. Ubuntu Server 12.04安装图解教程

                                                                                                Ubuntu S ...

  6. JS之脚本延迟

    自从开了博客,我就一下班回来匆匆吃完饭门一关等一开电脑一打开匆匆的研究东西,以至于朋友们都怀疑我是不是都得了自闭症 其实因为我有恐惧心理怕自己的技术哪天跟不上社会了,说到技术我觉得技术不求越新越好,但 ...

  7. 第4章 同步控制 Synchronization ----Interlocked Variables

    同步机制的最简单类型是使用 interlocked 函数,对着标准的 32 位变量进行操作.这些函数并没有提供"等待"机能,它们只是保证对某个特定变量的存取操作是"一个一 ...

  8. Operating system hdu 2835 OPT

    Operating system Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. 数据的分类-JavaScript数据类型

    JavaScript数据类型 1.数据类型是什么? 我们接触的绝大多数程序语言来说,把数据都进行了分类,包括数字.字符.逻辑真假:int,long,string,boolean....等等:我们都知道 ...

  10. 和团队齐头并进——敏捷软件开发的Scrum的学习

    敏捷开发的介绍 概念 更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也 ...