黑马程序员------java的异常处理
来源:互联网 发布:淘宝拍卖会 编辑:程序博客网 时间:2024/05/22 03:43
android培训、java培训
1,异常:异常就是程序在运行时出现的不正常情况。
2,异常的由来:问题也是现实生活中的一个具体事物,也可以通过java类的形式进行描述,并封装成对象。
其实异常就是java对不正常情况进行对象封装后的一种体现。
3,异常可分为两种:一种是严重的问题Error,Exception。
Throwable:
Error:一般不编写针对性的代码进行处理。
Exception:一般编写代码进行处理。
异常的处理:try{
要被检测的语句。
}
catch(异常类型 e){
处理方式。
}
finally{
一定会执行的语句。
}
常见处理方式:e.getMessage();
e.toString();
e.printStackTrace(); //打印异常名称,异常信息,异常的出现位置。
//jvm的默认处理方式就是调用printStackTrace()方法。
第二种处理方式是:在功能上通过throws声明此功能可能会出现问题。调用者可以自己处理try{}catch(){},
也可以在调用者的方法上同样抛出用throws。
对多异常的处理:应当声明更具体的异常。
对方声明了几个异常就应有几个catch块与之相对应。
父类的异常处理应该放在子类的下面。
4,自定义异常:1,在项目中会出现一些问题,这些问题并没有被java描述并封装成对象,所以就需要按照java中定义异常的思想
将特有的问题进行自定义异常封装。
2,自定义异常需要继承Exception或其子类,在使用时需要手动使用throw抛出该异常。
3,当函数内部出现throw抛出异常时,要么在内部try catch处理,要么在函数上通过throws声明交给调用者处理。
一般情况下当函数内部抛出异常时,函数上一定要声明这些异常。
4,因为父类已经把异常信息的操作都完成了,所以在自定义异常中子类只需把异常信息通过super传递给父类。
5,因为只有Throwable体系中的成员才具有可抛性,所以自定义异常需要是此体系中的子类,只有成为该体系的一员,
才能被throw和throws操作。
6,throws定义在函数上,throw定义在函数内。
7,自定义异常不能抛出比其父类更多的异常。
自定义一个异常类实例如下:
class FushuException extends Exception{ private double num; FushuException(){ super(); } FushuException(String message,int num){ super(message); this.num = num; } public double getNum(){ return num; } } class FushuDemo{ public double div(int a,int b)throw FushuException{ if(!b>0){ throw new FushuException("商不能为负数,出现负数的数字是:",b); } return a/b; } } class FushuExceptionDemo{ public static void main(String[] args){ FuduDemo fd = new FushuDemo(); try{ double d = fd.div(5,-5); System.out.println("结果为:"+d); } catch(FushuException e){ e.printStackTrace(); } } }
5,RuntimeException:运行时异常,是Exception的子类,如果函数内容抛出该异常,函数上可以不用声明,编译可以通过,
如果函数上声明了该异常,调用者可以不用处理,编译可以通过。
此异常不需要调用者处理,当该异常发生时,说明出现了不希望程序继续进行的情况,希望程序停止。
实例如下:
class FushuException extends RuntimeException{private double num;FushuException(String message){super(messgae);}} class Demo{public double div(int a,int b){ //运行时异常不必在函数上声明。if(b<=0)throw new FushuException("b值不能为负数或0!");return a/b;} } class RuntimeDemo{Demo d = new Demo();//运行时异常可以不用处理。double dou = d.div(5,-2);System.out.println("结果是:"+dou);}
6,异常的再次抛出
当本级中捕获的异常传递给下一级异常接收者,下一级异常接受者无法理解时,需要转换成一个下一级能够理解的异常在抛出此异常,
异常的抛出需要保证异常链不断。
- 黑马程序员------java的异常处理
- 黑马程序员-----关于java的异常处理
- 黑马程序员-java异常处理
- 黑马程序员--Java异常处理
- 【黑马程序员】Java异常处理
- 黑马程序员--java异常处理
- 黑马程序员--异常与异常的处理
- 黑马程序员--异常与异常的处理
- 黑马程序员——Java 异常的捕获及处理
- 黑马程序员_关于java的处理异常机制
- 黑马程序员_浅谈Java当中的异常处理机制
- 黑马程序员--Java异常处理笔记
- 黑马程序员:JAVA异常处理机制
- 黑马程序员-----------------java异常处理总结
- 【黑马程序员】java中的异常处理机制
- 黑马程序员---java异常处理机制
- 黑马程序员--Java异常处理机制
- 黑马程序员_05 java异常处理总结
- mtk6589显示子系统笔记(一)
- ERROR: ORA-00257: archiver error. Connect internal only, until freed.
- 机器学习入门的绝佳材料:斯坦福大学机器学习课程原始讲义(含公开课视频)
- 浅谈 Dynamics Ax2012 的workflow -- Participant
- lpm_ioctl 移植
- 黑马程序员------java的异常处理
- Linux shell脚本笔记
- ie浏览器 ftp 直接打开 下载问题
- sed -i修改链接文件注意问题
- Filter应用+struts2x拦截器区别
- oracle 将查询结果中的一列多个结果合并为一个字符串 并以逗号格开
- ITK 配准框架
- 不带www域名解析
- HDU 3665 Seaside 最短路