您的位置:首页 > 其它

异常机制学习笔记

2016-06-06 21:22 190 查看
一、java遇到异常两种处理方式
* --》不能处理的交给上级
* 1)throws:自己问题,自己不处理,交给方法上级处理
* --》能处理的,自己处理
* 2)try cacth:自己问题,自己处理
* 语法:
* try{
* //多句被监听的代码1
*  //多句被监听的代码2
*  //多句被监听的代码3
* }[catch(处理的异常类1  变量名 ){

* }catch(处理的异常类2 变量名 ){

* }...
* ]||[
* finally{

*  }
* ]

* 该结构特点
* 1)try有且只有1个
* 2)catch和finally至少有其中1个结构
* 3)catch:0至多个
* 4)finally:0至1个

*相关关键字含义
*try:(监听异常)监听可能会出现异常(问题)的多句代码。
* 1)如果有监听的代码有异常发生。
* a)有对应的catch,把异常交给对应的catch,异常代码之后不执行,把异常对象引用赋值给catch的变量,
*再执行对应catch所有的代码,然后离开trycath结构。
* b)没有有对应的catch:异常代码之后不执行,把异常抛出给上级处理。
* 2)如果有监听的代码没有有异常发生。
* 1)执行玩所有的try的代码,然后离开trycatch结构,执行之后的代码。
*catch:(处理异常):对应异常的处理代码,只有遇到对应的异常的时候才会执行。

二、Throwable(异常)的概念:程序非正常执行(运行时)的情况

   a) Exception(例外):业务处理代码层面的时候发生的问题,这种问题可以解决,可以通过异常机制进行处理

   b) Error(错误):业务处理jvm层面(运行环境)发生的问题,这种问题不能或不应该通过异常机制进行处理

java程序在执行的过程中也会遇到很多问题--》Throwable

程序执行为什么会遇到问题?
--》程序执行过程中,不能正常表示结果的时候-就会发生异常(问题)。
程序遇到的问题怎么产生的?
1)表达式执行发生异常(问题)
例如:a/b;当b为0-发生除数不能为0的异常(问题)
2)方法执行发生异常(问题)
例如:str.charAt(idx);当idx不是0到len-1就会发生异常(问题)
3)手动产生异常-throw(自找麻烦-该代码自己产生一个异常)
throw 异常(Exception)对象(包装了问题的信息)
例如:设置年龄时,获取的参数是负数,产生异常。

* 注意点
* 1)程序发生了Exception我们应该去处理,处理之后可以执行异常后面的代码。
* 2)如果没有处理,异常就会从发生的位置一致顺着方法的调用者,往上抛
* 直到抛给jvm处理 ,两件事
* a)打印异常出错的详细信息 :1)异常类名 2)异常描述 3)异常位置
* b)停止当前发生异常的线程(程序)
 

三、自定义异常类

* 1)类名 :问题描述+Exception
* 2)继承Exception或RuntimeException
* 3)两个构造器

* a)空构造
* b)设置描述信息的构造器

* 遇到问题(异常)的处理方式
* 1)trycatch:自己处理
* 2)throws :抛给上级(方法的调用者)处理

* Exception和RuntimeException对比
* 1)Exception可以处理的问题,必须自己选择处理方式
* 2)RuntimeException可以处理的问题,遇到该问题,方法可以【自动抛出异常】
* 可以不需要手动的处理异常。

 四、遇到问题(异常)的处理方式->必须处理
* 1)trycatch:自己处理
* 2)throws :抛给上级(方法的调用者)处理

* throws:把方法里遇到的异常(所报考的异常)抛给(交给)上级(方法的调用者)处理
* 语法:
* 【访问修饰符】 【static】 返回值类型   方法名(参数列表)throws 报告异常的类1,报告异常的类2...{
*
* }  

* 注意点
* 1)throws可以跟多个异常类 throws 报告异常的类1,报告异常的类2...
* 2)throws抛出异常可以抛出自己类,或者其父类(建议抛出自己类)
* 3)遇到异常(问题)我们一定要处理,否则编译出错。但是:runtimeException
* 有默认的处理方式--》throws

四、方法的重写的语法要求
* 1)有超类型和子类型结构(继承或实现)
* 2)方法的签名:
* 超类型==子类型
* 3)返回值
* a)基本类型+void
* 超类型==子类型
* b)引用类型
* 超类型>=子类型
* 4)访问修饰符
* 超类型<=子类型
->儿子比父亲更开放
* 5)throws声明的可能出现的异常列表
* 超类型>=子类型
->儿子不能比父亲惹更多的麻烦
* 大于>=
* 1)指的是超类型和子类型里最大的异常的关系
* 2)跟个数无关
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: