异常的相关知识
来源:互联网 发布:时光知味岁月沉香 编辑:程序博客网 时间:2024/06/07 03:27
- 异常
- Object->Throwable
- Error
- Exception
- RuntimeException
- 运行时异常
- 其它
- 受检异常(非运行时异常)
- RuntimeException
- try{}catch() {}
- jdk1.7 c(Exception|*** e) 同级/没有直接继承关系
- 将子类写在前面
- 1.7自动关闭流 closeable
- try(//初始化)
- 异常处理
- 定义:异常时阻止当前方法和作用域继续执行的问题,异常若不处理会导致程序中断执行
- 格式:
- Object->Throwable
- 子类在前,同级的可以并列
- 过程;
- 一旦产生了异常,系统自动产生一个异常类的实例化对象
- 如果有try,则自动找匹配的catch语句执行,如果没有异常处理,则程序退出,并由系统报告错误
- 所有catch根据参数来匹配异常类的实例化对象,若匹配成功,则由该catch块执行
- Throwable是所有异常的父类(是实现类)
- Error系统级错误(JVM内部),程序无法控制,尽量避免
- Exception程序错误
- 直接子类
- CheckedException(受检异常/非检查异常)必须try-catch或者用throw抛出(需用throws在方法参数后声明)
- throw抛出,把异常抛出,由调用方处理
- throws与throw配合使用
- RuntimeException之类
- 运行时异常,没有强制要求,不用try也不用抛出
- 直接子类
- new Exception().printStackTrace()打印异常的堆栈信息
- VM的处理方式是,中断程序的运行。
- getMessage()
- 常见异常
- ArithmeticException
- NullPointerException
- ArrayIndexOutOfBoundsException
- IndexOutOfBoundsException
- IOException
- SQLException
- IllegalArgumentException
- NoSuchElementException
- InputMismatchException
- NumberFormatException
- ClassNotFoundException
- ClassCastException
- DateFormatException
- OutOfMemoryExceptioin
- StackOverFlowException?
- 规则:
- 第一、try语句不能单独存在,可以和catch、finally组成 try...catch...finally、try...catch、 try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个,try、catch、 finally这三个关键字均不能单独使用(throw可以单独出现)
- 第二、try、catch、finally三个代码块中变量的作用域分别独立而不能相互访问
- 第三、多个catch块时候,Java虚拟机会匹配其中一个异常类或其子类,就执行这个 catch块,而不会再执行别的catch块。
- 自定义异常
- 定义:通常开发中会把一些业务逻辑异常定义为异常类(继承已有异常类),利用异常机制,在多层调用时便于处理
- for instance :登录验证异常/权限控制异常
- 对于一些检查异常,可以将其包装为运行时异常,便于解除方法重写时的一些限制
- 然后再调用方, 调用getCause()解除包装
- 定义:通常开发中会把一些业务逻辑异常定义为异常类(继承已有异常类),利用异常机制,在多层调用时便于处理
- assert
- 关键字,表示断言
- 定义:判断某一个方法逻辑处理后的结果是否正确
- 语法: assert表达式 :不成立时输出的字符串;
- 需要给jvm加参数 -ea
- AssertionException
- Debug...
- StringBuffer/StringBuilder
- 出现原因:使用String连接字符串,代码性能低,因为String内容不可变
- 连接过程中会产生大量的垃圾对象
- 默认动态数组size:16
- capacity()
- new StringBuilder(int capacity)
- toString
- 出现原因:使用String连接字符串,代码性能低,因为String内容不可变
- Extends
- 两种异常的区别
- 用不用强制try catch
- 是谁的直接子类
- final, finally, finalize三者的区别
- final:修饰属性->常量,修饰方法->不能被子类重写,修饰类->不能有子类
- finally:常与try catch配合使用,始终执行
- finalize:当垃圾回收器确定没有引用指向该对象后,会由对象回收器调用该对象的这个方法,并回收内存,由于具有不确定性,所以不常用
- finally,无路try中是否有有return/或是否异常执行, finally代码块均会执行
- 异常的统一出口
- 两种异常的区别
- Notice
- throw与throws关键字: throws关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。实际 上对于Java程序来讲,如果没有加入任何的异常处理,默认由JVM进行异常的处理操作。 throw关键字表示在程序中手动抛出一个异常,因为从异常处理机制来看,所有的异常一旦 产生之后,实际上抛出的就是一个异常类的实例化对象,那么此对象也可以由throw直 接抛出
- 在catch之外也可以使用throw ***
- java [-ea]//JVM参数 class [//param]
- 默认可以抛出RuntimeException,无需用throws声明
try{
//有可能发生异常的代码段 }catch(异常类型 对象){ //异常的处理操作 }catch(异常类型 对象){ //异常的处理操作 } ... finally{ //异常的统一出口 }
Screen clipping taken: 3/15/2017 23:57
0 0
- 异常 的相关知识
- 异常的相关知识
- Java异常的相关知识
- Java程序中异常的相关知识
- Java基础回顾 : 异常的相关知识
- java中异常的相关知识
- (Oracle)异常处理的相关知识与实例
- JAVA中的异常处理相关知识
- 相关reactjs的相关知识
- OPC的相关知识
- JDBC的相关知识
- 事务的相关知识
- 编译器的相关知识
- 编译器的相关知识
- OPC的相关知识
- IUnKnown的相关知识
- 噪音的相关知识
- xml的相关知识
- 关于C++ const 的全面总结
- Android打造自己的网络框架----RxJava的基础学习使用2(map、flatMap)
- 开发?
- problem L
- 梁广轩_1505010601_实验2
- 异常的相关知识
- Introduction_to_Algorithms_Appendix_C
- 栈和队列的底层数组实现
- JavaScript多级菜单
- Dubbo中暴露服务的过程解析
- Leetcode-399. Evaluate Division
- android笔记:Android开发仿映客送礼物效果
- jquery DOM操作
- GPIO端口各种模式的区别