黑马程序员_复习异常:理解自定义异常
2014-04-13 20:32
239 查看
----------------------
android培训 、 java培训 、 期待与您交流! ----------------------
1、理清异常处理的思路:
所有的异常继承于:Throwable:这个体系的特点:体系中的所有类,以及对象都具备可抛性。
Throwable有两个直接子类:Error,Exception
Throws用来声明问题。
throw用抛出问题对象。
try...catch...进行异常捕获处理。
2、 为什么要自定义异常?
有很多异常的子类继承了Throwable,来描述常用见的异常,但是在实例开发的时候我们会遇到一些Java类库中没有描述的异常,这时候就需要我们自定义异常来处理程序中的异常;
我们可以模仿已经在类库中描述的异常处理的类来自定义异常,首先查AFI文档,发现Error、Exception各有四个构造方法,没有直接方法,所以我们在定义异常的时候只要继承Error、Exception覆盖其构造方法就能达到自定义异常的效果。用两个继承Exceptin的例子说明:
3、 演示使用自定义异常处理实际开发中的问题:
如有错漏,诚恳求证!
---------------------- android培训 、 java培训 、 期待与您交流! ----------------------
详细请查看:www.itheima.com
android培训 、 java培训 、 期待与您交流! ----------------------
1、理清异常处理的思路:
所有的异常继承于:Throwable:这个体系的特点:体系中的所有类,以及对象都具备可抛性。
Throwable有两个直接子类:Error,Exception
Throws用来声明问题。
throw用抛出问题对象。
try...catch...进行异常捕获处理。
2、 为什么要自定义异常?
有很多异常的子类继承了Throwable,来描述常用见的异常,但是在实例开发的时候我们会遇到一些Java类库中没有描述的异常,这时候就需要我们自定义异常来处理程序中的异常;
我们可以模仿已经在类库中描述的异常处理的类来自定义异常,首先查AFI文档,发现Error、Exception各有四个构造方法,没有直接方法,所以我们在定义异常的时候只要继承Error、Exception覆盖其构造方法就能达到自定义异常的效果。用两个继承Exceptin的例子说明:
class FuShuException extends Exception//自定义异常,继承Exception { private int num; FuShuException()//覆盖空参构造方法 { super(); } FuShuException(String meg,int num)//覆盖传参构造方法 { super(meg);//访问父类中的有参构造函数 this.num = num; } public int getNum() { return num; } } class Demo { int div(int a,int b)throws FuShuException/*声明自定义的异常*/,ArithmeticException { if(b<0) throw new FuShuException("负数啦,又废啦!",b);//抛出自定义异常 return a/b;//throw new ArithmeticException(); } } class ExceptionDemo4 { public static void main(String[] args) { Demo d = new Demo(); try { int num = d.div(4,0); System.out.println("num="+num); } catch (FuShuException e)//用try...catch...捕获自定义异常 { System.out.println(e.toString()+e.getNum()); } catch (ArithmeticException e) { System.out.println(e.toString()+"....."); } System.out.println("over"); } }
3、 演示使用自定义异常处理实际开发中的问题:
/* 自定义老师上课时可能出现的异常,以及异常的处理; 以及自定义公司老师上课计划异常,以及异常处理方案 */ class LanPingException extends Exception//电脑可能出现蓝屏异常 { LanPingException(String msg) { super(msg); } } class MaoYanException extends Exception//电脑可能出现冒烟异常 { MaoYanException(String msg) { super(msg); } } class NoPlanException extends Exception//老师计划可能有变,无法完成教学计划 { NoPlanException(String msg) { super(msg); } } class Computer { /* 假设三种状态:state==0、state==1、state==2; 0---电脑正常运行、1---电脑蓝屏、2---电脑冒烟 */ int state=0; void run()throws LanPingException,MaoYanException//声明两个异常 { if(state==1)//当电脑状态为1时,电脑是蓝屏状态 throw new LanPingException("蓝屏啦!");//抛出蓝屏异常 if(state==2)//当电脑状态为2时,电脑是冒烟状态 throw new MaoYanException("冒烟啦,废啦!");//抛出冒烟异常 System.out.println("电脑运行!");//电脑正常运行状态 } void reset()//电脑重启函数 { System.out.println("电脑重启!"); state=0;//电脑重启后,改变电脑状态 } } class Teacher { private String name; private Computer cmpt; Teacher(String name) { this.name=name; cmpt=new Computer(); } public void prelect()throws NoPlanException//异常转换,抛出一个与教学任务有关的异常 { /* 对异常进行环绕处理 */ try { cmpt.run(); System.out.println("讲课!"); } catch (LanPingException e)//对抛出蓝屏异常进行接收 { System.out.println(e); cmpt.reset();//处理蓝屏异常,重启电脑 prelect();//电脑重启后,状态恢复正常,继续讲课! } catch (MaoYanException e)//对抛出冒烟异常进行接收 { System.out.println(e); test(); /*MaoYanException e=new MaoYanException();*/ //throw e;//将解决不了的问题继续抛出。 /*考虑到实际开发中是不应该抛出调用者无法解决的异常,此时应对异常进行转换*/ throw new NoPlanException("课时进度无法继续!");//抛出与教学任务有关的异常 } } public void test()//老师处理异常的方法 { System.out.println("做练习!"); } } class ExceptionDemo2 { public static void main(String[] args) { Teacher t=new Teacher("老毕"); try//公司对老师抛出的教务计划异常的环绕处理 { t.prelect(); } catch (NoPlanException e)//异常接收 { System.out.println(e); System.out.println("换个老师讲课!");//异常处理方法 } } }
如有错漏,诚恳求证!
---------------------- android培训 、 java培训 、 期待与您交流! ----------------------
详细请查看:www.itheima.com
相关文章推荐
- 黑马程序员_基础复习08_异常
- 黑马程序员_自定义异常
- 黑马程序员------面向对象(No.8)(自定义异常、throw(throws)、RuntimeException、覆盖时异常、异常总结)
- 黑马程序员——自定义封装异常日志信息
- 黑马程序员_内部类,异常,自定义异常,RunTimeException, throw和throws
- 黑马程序员——Java基础---自定义异常类
- 黑马程序员 Java基础 处理异常信息以及自定义异常
- 黑马程序员 _Java中的异常处理及自定义异常
- 黑马程序员--07.集合框架--并发访问异常理解:一个单线程程序的多线程运行思想【个人总结】
- 黑马程序员————Java基础日常笔记---对异常的理解
- 黑马程序员_异常理解
- 黑马程序员——java复习总结——异常和包
- 黑马程序员—字节流、自定义缓冲区、异常信息处理
- 黑马程序员——自定义异常
- 黑马程序员 java基础复习三之对象初始化,多态和异常等
- 自定义异常及RuntimeException-------------黑马程序员
- java异常的学习和理解(包含异常的处理方式,异常的分类,运行时异常和编译时异常,自定义异常)
- 黑马程序员—java基础复习—异常
- 黑马程序员----,编译异常,运行异常。自定义异常,IO流技术,分类,
- 黑马程序员——异常机制3:自定义异常