Java基础10天 学习笔记_面向对象(异常 finally关键字)
来源:互联网 发布:广电网络机顶盒 编辑:程序博客网 时间:2024/06/17 20:55
01 finally关键字存放的是一定会执行的东西。
有一种情况是在catch语句中出现了return,则调用函数退出,就不会执行到try, catch以后的语句了,而在finally块中的语句是无论如何都可以执行到的。
实例,连接数据库
1.连接,
2.操作
3.断开
无论能不能连接,有没有操作,断开操作一定会执行
所以释放资源的操作,finally非常重要!!!
异常中finally对于资源的处理是很重要的+
finally的作用
定义了一定执行的代码,通常用于关闭资源
异常的切换!重要的。
让调用者用他们理解的人类的语言,看的懂异常~
每个人都有自己的Scope
问题需要内部处理,
问题有关联性!解决本层的问题,而将不能解决的暴露出去
try{
throw new Exception();
}
catch(Exceptione)
{
}
编译通过,问题被解决问题可以不用声明。 相当于内部消化了
异常在子父类覆盖中的体现:
1.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能:抛出父类的异常或者异常的子类。(也就是父类异常体系下的异常)
2.子类抛出的异常是父类异常的子集
3.如果父类或者接口的方法没有异常抛出,那么子类在覆盖方法时,也不能抛出异常
如果子类方法发生了异常,那就必须进行try处理,绝对不能抛。
4异常练习
有一个圆形和长方形,
都可以获取面积,如面积出现非法值, 0 或者负数,视为获取面积出现了问题
1.先设计
求面积:是个扩展功能,接口,
是个基本功能,类。
要避免:正常流程代码和问题处理代码,结合的太紧密了,阅读性差,而且不灵活。
一般我们只保留正常的流程代码,然后在问题发生时再看问题的处理代码
异常的作用来了:它降低了正常流程代码和问题处理代码的耦合性!
throw关键字有跳转功能~
Rec(-3,4)
本身就不存在,所以程序应该停止,
有一类异常的目的就是让程序停止: RuntimeException
合法化数值的检测和抛异常,一般在构造函数时就要做了,而不是定义在具体的方法上,
如果连矩形的边长都为负数了,那么其功能,如求面积,求周长都是没有意义的了。
所以构造函数报了异常,后面的步骤都没有办法继续,这样才合理。
没有办法继续,我们想到了runtimeex,这个特殊的异常类。
要避免:正常流程代码和问题处理代码,结合的太紧密了,阅读性差,而且不灵活。
一般我们只保留正常的流程代码,然后在问题发生时再看问题的处理代码
其格式
if (条件)
{
throw new xxxException("xxxx");
}
回顾下:
RuntimeException类和其子类,在函数内定义了则不用在函数上声明,是非常特殊的异常。
运行时的异常。调用时也不需要try catch,因为会中断程序
全局静态共享,定义
碰到可能会产生的问题,全部用异常描述并且封装成对象
一般异常而言:函数内有抛有声明,调用者有抛就有接(声明异常,也可以是父类),
而Runtime异常:函数内有抛无声明,调用者也可以不接
不声明就不需要try, catch
throws xxxException需要声明在可能出现问题的类上,而不是类上。
/*有一个圆形和长方形,都可以获取面积,如面积出现非法值 , 0 或者负数,视为获取面积出现了问题*/interface AreaCal{void area();}class NoValueException extends RuntimeException{NoValueException(String msg){super(msg);}}class Square implements AreaCal {private int a, b;Square(int a, int b ) //throws NoValueException{if (a<=0 || b<=0){throw new NoValueException("Illegal Value");}this.a=a;this.b=b;}public void area(){System.out.println(a*b);}}class Circle implements AreaCal {private int r;public static final double PI=3.14;Circle(int r ) //throws NoValueException{if (r<=0){throw new NoValueException("Illegal Value");}this.r=r;}public void area(){System.out.println(r*r*PI);}}class ShapeDemo{public static void main(String[] args) {Square fang= new Square(-5,6);fang.area();Circle c= new Circle(-10);c.area();System.out.println("Over");}}
异常的基本格式和知识点
System.exit(0);
这样读不到Finally中的内容。虚拟机结束
这个挺重要的
006面向对象练习4
1.try + finally ,没有catch,依然要在函数上声明异常,因为在函数内并没有解决
2.考察子类的实例化过程
07包package
对类文件进行分类管理
给类提供多层命名空间
pack\packageDemo
javac -d. Package.java
做项目是先写包再写类!
-d后面可以跟任意的目录 +但是要注意设置classpath = $目录
08不同包中的类的互访
pack----DemoA
packa----DemoB(main)
Main调用DemoA中的方法,要加包名
pack.newDemoA(). show ()
在cmd中调用主函数是也要加
javapack.DemoB
protected:保护权限(给不同包中的子类给的权限)
package也是封装的一种形式
mport简化:不用在调用的类上加上package名了,有的时候多层的package调用起来好麻烦
import导入的是包中的类,而不是包
如果导入了重名的类时,调用类时必须加包名
一定要建立不重名的包名,可以用url来定义
packagecn.jerryjava.demo
packagecn.jerryjava.test
010 Jar包
- Java基础10天 学习笔记_面向对象(异常 finally关键字)
- Java基础05天 学习笔记_面向对象(概念,封装,匿名对象,this关键字)
- Java基础09天 学习笔记_面向对象(内部类,异常,RuntimeException, 自定义异常)
- Java基础07天 学习笔记_面向对象(继承,final关键字,抽象类,接口)
- Java基础08天 学习笔记_面向对象(多态 概念,练习)
- 黑马程序员——Java基础---面向对象(继承_概述、关键字final、抽象类)(5) 分类: Java学习笔记
- Java基础学习笔记之三_面向对象
- Java基础学习笔记_面向对象1
- Java基础学习笔记_面向对象2
- Java基础视频教程第10天_面向对象之异常2、包
- java笔记01(基础、面向对象、异常)
- Java基础06天 学习笔记_面向对象(Static静态,JavaAPI,单例设计模式)
- 【JavaSE学习笔记】面向对象_继承、super关键字
- 【学习笔记16】java面向对象-异常
- Java基础视频教程第05天_面向对象入门及this关键字
- Java精选笔记_面向对象(多态、异常)
- Java基础---第十天 面向对象异常
- Java基础视频教程第09天_面向对象之内部类、异常1
- 进程管理之schedule()
- USACO Cow Tour
- web服务器【apache/nginx] 关闭目录的浏览权限
- [LeetCode] Next Permutation
- 堆排序
- Java基础10天 学习笔记_面向对象(异常 finally关键字)
- java多态
- [ACM] hdu 3037 Saving Beans (Lucas定理,组合数取模)
- C++ 对象的内存布局(上)
- 方面客服吗
- C++ 对象的内存布局(下)
- 说说Mac安装YCM
- SIFT尺度空间的理解
- Linux快速启动工具(七)