Java异常的总结-----黑马程序员
来源:互联网 发布:韩国人化妆品知乎 编辑:程序博客网 时间:2024/05/17 10:25
ASP.Net+Android+IOS开发------期待与您交流
<异常>
1. 异常体系
* Throwable 所有异常和错误的父类
* toString()
* getMessage()
* printStackTrace() 最长用,信息量最大,JVM调用的也是这样方法
* Error
* Exception 所有异常的父类
* RuntimeException
* 其他派系
2. 异常的第一种处理方法
* try{
检测的代码
可能出现异常的代码
如果出现以后,以后的代码(try内的)不在运行,跳转到catch去了
}catch(异常类 变量){
处理方法
}
3. 方法内部抛出异常 (第二种异常处理方法,抛出异常)
* 如果方法内部抛出异常,选择try catch来处理
* 在方法的声明上,继续抛出 throws 异常类
* 如果我们调用了抛出异常方法,可以选择try catch处理,也可以继续抛出
但是,到了最终的调用者,不要在抛出了
* throw throws
* throw 作用在方法内,抛出异常对象,关键字后面跟随的是 new 异常对象
* throws 作用在方法的声明生,后面跟随的是异常类
4. 编译时期异常与运行时期异常
* 编译时期异常,调用了一个抛出异常的方法,没有进行处理,编译失败
* 运行时期异常,运行时候,出现的异常
* RuntimeException 运行时异常
* 如果方法内部,抛出的是RuntimeException或者是它的子类的异常
* 方法的声明生,无需在使用throws进行抛出
* 对于调用者,不需要对异常进行处理
* 原因是(********):
运行时期异常,在程序运行中,是不允许出现了,如果出现了,java工程师,希望
程序停止运行,并让开发者,修改代码
抛出运行时期异常,不需要声明,也不需要处理,发生了就要停止程序了
ClassCastException
NullPointerException
ArrayIndexOutOfBoundsException
5. 自定义异常
* java中目前所有的异常对象,也可能不够我们使用
* 自定义异常 前提,继承异常类Exception,入伙
* 凡是异常类,都具备可抛性
* 如果我们定义的是运行时期异常,继承RuntimeException
* 需要将异常的信息,传递给自定义异常的 父类,用super();
自定义异常的代码演示
package cn.itcast.exception;/* * 演示自定义异常的案例 *///自定义负数异常class FuShuException extends RuntimeException{FuShuException(String message){super(message);}}class Demo2{public int getArea(int width,int heigth){if(width <=0)throw new FuShuException("长度出现非法数据,小于或者等于0");if(heigth <=0)throw new FuShuException("高度出现非法数据,小于或者等于0");return width * heigth;}}public class ExceptionDemo2 {public static void main(String[] args) { Demo2 d = new Demo2(); int x = d.getArea(0, 23); int y = d.getArea(11, 46); if(x>y) System.out.println("aaaaaaaaaaa"); else System.out.println("bbbbbbbbbbb");}}
6. finally代码块
* 配合try catch 处理 来进行使用
* finally代码块中的程序,是一定要执行的
* finally一般用于关闭资源
finally的使用方法代码体现
package cn.itcast.exception;/* * finally代码块 */class Demo3{public void show()throws Exception{if(2==1) //调用了windows中的功能throw new Exception();elseSystem.out.println("############");}}public class ExceptionDemo3 {public static void main(String[] args){ Demo3 d = new Demo3(); try{ d.show(); }catch(Exception e){} finally{ // System.out.println("+++++++++"); //释放资源 }}}
7. 继承中子类和父类类异常的抛出特点
* 子类覆盖父类的方法,如果父类方法不抛异常,子类也不能抛出异常
* 子类覆盖父类的方法,如果父类方法抛出异常,子类可以抛出,也可以不抛出异常
但是,子类抛出的异常,不能"大于"父类抛出的异常
8. 异常练习题
* 老师上课,用笔记本上
笔记本会出现异常,蓝屏异常,冒烟异常
笔记本有3个状体,正常状态上课
老师调用笔记本的开机功能上课,如果出现异常,该怎么办?
需要几个类 ,2个自定义异常类,一个是蓝屏,一个是冒烟
笔记本类
老师调用笔记本的功能上课
测试运行的
下面是习题的代码实现:
package cn.itcast.exception;//自定义蓝屏和冒烟异常class LanPingException extends Exception{ LanPingException(String message) { super(message);}}class MaoYanException extends Exception{ MaoYanException(String message) { super(message);}}class StopException extends Exception{ StopException(String message) { super(message);}}//定义笔记本类,开机上课功能,3个状态class Computer{//定义状态变量 0 正常 1蓝屏 2冒烟int status = 2 ;public void open()throws LanPingException,MaoYanException{if(status == 0 ){System.out.println("老师开机上课了");}else if(status == 1){throw new LanPingException("笔记本蓝屏了");}else{throw new MaoYanException("笔记本冒烟了");}}//笔记本的重启功能public void reset(){System.out.println("笔记本重启了");status = 0 ;}}//定义老师类,调用笔记本上课功能class Teacher{String name;Computer c = null;Teacher(String name){this.name = name;c = new Computer();}public void teacher()throws StopException{try{c.open();}catch(LanPingException e){System.out.println("-----"+e.toString());c.reset();teacher();}catch(MaoYanException e){throw new StopException("课程无法继续");}}public void lianxi(){System.out.println("做练习了啊。。。。");}}/* * 老师调用笔记本上课,出现的异常情况 * 冯巍 */public class ExceptionTest {public static void main(String[] args) { Teacher t = new Teacher("老师"); try{ t.teacher(); }catch(StopException e){ e.printStackTrace(); t.lianxi(); }}}
ASP.Net+Android+IOS开发------期待与您交流
详细请查看:http://edu.csdn.net
- Java异常的总结-----黑马程序员
- 黑马程序员-----java异常总结*
- 黑马程序员--异常总结--java
- 黑马程序员---异常的总结
- 黑马程序员---异常的总结
- 黑马程序员-java的异常
- 黑马程序员:java中的异常总结
- 黑马程序员-----------------java异常处理总结
- 黑马程序员:Java基础总结----异常
- 黑马程序员_05 java异常处理总结
- 黑马程序员-Java基础-异常处理总结
- 黑马程序员 知识点总结-Java异常
- 黑马程序员------Java基础之异常总结
- 黑马程序员 Java基础知识总结-异常处理
- 黑马程序员:java中的异常总结
- 黑马程序员java自学总结之--异常
- 黑马程序员:java中的异常总结
- 黑马程序员--java基础 --异常总结
- java socket 属性设置
- android 电池(二):android关机充电流程、充电画面显示
- 单链表逆转
- c++字符串简单加密
- Juniper DIP MIP VIP有什么区别
- Java异常的总结-----黑马程序员
- android 电池(三):android电池系统
- 推荐系统论文分类推荐
- X264源程序分析(x264_slice_write)——学习笔记(1)
- EJBTimer 使用EJB提供的定时器
- S3C6410移植u-boot-2010.3(1)成功编译的开始
- spi_ads1299_mini6410: version magic '2.6.38 mod_unload ARMv6 ' should be '2.6.28.6-FriendlyARM mod_u
- spring 自带filter解决form提交中文乱码
- android电池(四):电池 电量计(MAX17040)驱动分析篇