day8-18(异常)
来源:互联网 发布:淘宝手机端怎么改好评 编辑:程序博客网 时间:2024/06/04 01:35
一.异常定义
用一个类来描述在代码编译或者运行期间可能遇到的各种错误.Throwable:所有异常或错误的父类 **Exception**:异常 1.在编写代码期间:由编译器提出,被称之为受查异常 2.在运行代码期间:编译器无法检查的,被称之为非受查异常.也称为运行时异常.不是所有的运行时异常都需要被处理 常见面试题:说出5种常见异常,以及原因和解决办法,如何回避? 答: **Error**:错误,通常是jvm抛出的,一般情况不需要处理Error
二.异常应用
throw: 抛出一个异常.throws:声明此处可能会产生某种异常.(有可能会,不一定会.)
public class Demo {//throws Exception{类不能抛出任何异常 public static void main(String[] args) { method(); } /** * throws只能用子啊方法声明处,用于声明此方法可能会产生某种异常 * throw 用在方法的真实的抛出一个异常对象 * @throws NullPointerException */ private static void method() throws NullPointerException{//throws throw new NullPointerException("空指针异常"); }}
try-catch-finally: final,finally,finalize,说出三者区别 1.final 表示最终,可以修饰 1.1类(内部类可以,接口不可以) 不可以被继承 1.2方法不可以被重写 重写:存在继承关系中,子类更改父类的实现方式.改的是方法体.一个行为不同实现 重载:同一个类中,方法名相同,参数列表不同.不同特征不同的实现 1.3变量 引用:对象不能变 基本:值不能变 2.finally: 异常模块的最后一个模块,位于额外缓冲区,通常这里进行释放资源关闭资源 比如流 各种close 3.finalize 和GC有关(垃圾回器),不受人为调用,gc所处的线程是低级线程
public class Demo {//throws Exception{类不能抛出任何异常 public static void main(String[] args) { //--try-catch 是异常处理语句块. //try 中是可能产生异常的代码 //catch是对上面可能产生的异常进行捕捉,不产生则不执行catch try {//try中如果有多条语句,其中任意一条语句产生异常.后续语句是不会执行的,直接catch捕获 System.out.println(1); method(); System.out.println(2); }catch (NullPointerException e){ e.printStackTrace(); return; }catch (Exception e){ e.printStackTrace(); }finally{//异常捕捉的最后一个结构,代表最终还是会执行,用于关闭和释放各种资源,比如流,对象 /** * 思考:finally一定会执行,如果在catch中存在return是什么情况 * finally中有return会有什么执行情况 * * 类似:如果一个方法有返回值,在方法的内部声明一个局部变量,在方法结束时把该变量返回.问题是:局部变量应该保存在栈中 * 当方法结束,方法栈要释放该方法锁占用的栈资源.那么局部变量保持在哪里,锁返回的值是哪里来. */ } } /** * throws只能用子啊方法声明处,用于声明此方法可能会产生某种异常 * throw 用在方法的真实的抛出一个异常对象 * @throws NullPointerException */ private static void method() throws NullPointerException{//throws throw new NullPointerException(); }}
三.异常处理原则
1、 能处理就早处理,抛出不去还不能处理的就想法消化掉或者转换为RuntimeException处理。因为对于一个应用系统来说,抛出大量异常是有问题的,应该从程序开发角度尽可能的控制异常发生的可能。2、 对于检查异常,如果不能行之有效的处理,还不如转换为RuntimeException抛出。这样也让上层的代码有选择的余地――可处理也可不处理。3、 对于一个应用系统来说,应该有自己的一套异常处理框架,这样当异常发生时,也能得到统一的处理风格,将优雅的异常信息反馈给用户。
0 0
- day8-18(异常)
- day8
- DAY8
- Day8
- DAY8
- Day8
- day8
- Day8
- Python学习记录day8-面向对象进阶、反射和异常处理
- day8-笔记
- Day8.01
- Day8.02
- Day8.03
- Day8.04
- Day8.05
- Day8.06
- Day8.07
- Day8.12
- python控制台查看某个包文件路径和源码
- mybatis 二级缓存
- ios视图frame与bounds的区别
- POJ 2318 TOYS
- Android中的Touch事件
- day8-18(异常)
- 求最大连续子序列的和
- CornerStone上传静态库(.a文件)
- 英文排序和中文排序
- 用CornerStone配置SVN,HTTP及svn简单使用说明
- Unity3D 5.X Pro破解方法
- 模仿腾讯QQ的web登陆面板
- Xcode常用插件
- Ultraedit中编辑go语言源代码