黑马程序员:java基础知识(三)
来源:互联网 发布:ubuntu lamp 编辑:程序博客网 时间:2024/04/30 10:19
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------
六、异常1、所谓异常,就是程序在运行时出现的不正常情况。java中的异常,是通过java类的形式对不正常的情况进行描述,并封装成对象。在程序运行时,往往会出现一些问题,我们分为两个类型,一个是严重问题(Error),一个是非严重问题(Exception)。对于Error,我们是不允许存在的,在运行时,如果出现Error,就说明程序有错误。而Exception,有时候是不能避免的,比如,做除算时,分母为零的情况。这时候我们就会使用针对性的处理方式来处理异常。Error类和Exception类,都是Throwable类的子类。
2、异常的处理:try...catch...finally...
3、自定义异常:
在实际项目中,往往会出现一些特有的问题,而这些问题并没有被java中所描述。所以对于这些问题,可以按照java对问题的封装的思想,将这些特有的问题自定义为异常,封装起来。例如,在某些计算中,不能有负数的运算。
class FushuException extends Exception
{
......
}
4、RuntimeException:运行时异常
所谓运行时异常,就是说,程序中如果存在这个异常,而且没有对其进行处理,在编译时是没有问题的,在运行时,会被检测出,而且一旦出现这个异常,程序就会终止。
5、异常处理中的finally
finally的代码是一定会被执行的,不管是否出现异常。finally与外部代码的区别:
(1)①②两处代码都能执行到:
......
{
try{
可能出现异常的代码
}catch(异常 e){
异常处理
}finally{
System.out.println("finally");// ① finally中的代码
}
System.out.println("out code");// ② 外部中的代码
}
(2)①处finally的代码执行到,②处的外部代码执行不到:
......
{
try{
可能出现异常的代码
}catch(异常 e){
异常处理
return; //异常处理结束后return
}finally{
System.out.println("finally");// ① finally中的代码
}
System.out.println("out code");// ② 外部中的代码
}
(3)①②两处代码都执行不到:
......
{
try{
可能出现异常的代码
}catch(异常 e){
异常处理
System.exit(0);
}finally{
System.out.println("finally");// ① finally中的代码
}
System.out.println("out code");// ② 外部中的代码
}
由上面三个例子可以看出区别,值得注意的是,当在进入finally代码块之前,如果执行了“System.exit(0)”时,finally中的代码也不会被执行。
6、异常在子类和父类覆盖中的体现
(1)子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类;
(2)如果子类中出现了父类中没有的异常,那么这个异常必须在内部处理,不能抛出;
(3)如果父类方法抛出多个异常,那么子类在覆盖方法时,只能抛出父类异常的子集;
(4)如果父类或者接口的方法中没有异常抛出,那么子类在覆盖父类时,也不能抛出异常,如果子类中确实出现了异常,那就必须在内部处理,不能抛出。
7、异常的处理原则:
(1)处理方式有两种:throws(抛出) 或 try..
(2)调用到抛出异常的功能时,抛出几个就处理几个,一个try对应多个catch
(3)多个catch出现时,要把异常最上级的父类放到最后面。
(4)catch内,需要定义针对性的处理方式。当捕获到异常,但是在当前功能中不能对其进行处理时,可以继续抛出。如:
try{
throw new Exception();
}catch(Exception e){
throw e;
}
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
0 0
- 黑马程序员:java基础知识(三)
- 【黑马程序员】Java基础知识(三)
- 黑马程序员---java基础知识(三):面向对象
- 黑马程序员,Java基础知识三:面向对象
- 黑马程序员--C#基础知识小结(三)
- 黑马程序员 java 基础知识
- 黑马程序员---- java基础知识
- 黑马程序员 Java基础知识
- 黑马程序员-----JAVA基础知识
- 黑马程序员---Java基础知识
- 黑马程序员---java基础知识
- 黑马程序员 Java基础知识
- 黑马程序员-------java 基础知识
- 黑马程序员---java基础知识
- 黑马程序员 Java基础知识
- 黑马程序员-java基础知识
- 黑马程序员-Java基础知识
- 黑马程序员----------java基础知识
- 2014/6/2~2014/6/8
- 黑马程序员_java基础--数组
- ARC
- valuestack,stackContext,ActionContext.之间的关系
- Swift学习之七:Optional value(可选值)
- 黑马程序员:java基础知识(三)
- 中国特色程序员的「钱途」
- Java网络编程
- 多线程和网络
- SharePoint 2010 添加“我的链接”菜单
- hbase ubuntu 单机版 安装配置
- apue读书笔记【七】:文件共享
- 工作7年
- 数据结构课程设计题目四_二叉树