finally里放的是一定执行的代码.
finally代码块:定义一定执行的代码。通常用于关闭资源。
class NoException extends SQLException { } public void method() throws NoException { try { 链接数据库 数据操作 //throw new SQLException(); } catch (SQLException e) { 对数据库进行异常处理 throw new NoException(); } finally { 关闭数据库链接动作 //该动作,无论数据操作是否成功,一定要关闭资源 } }
第一个格式:
try { } catch () { }
第二个格式:
try { } catch () { } finally { }
第三个格式:
try { } finally () { }
class Demo { public void method() { try { throw new Exception(); } catch (Exception e) //问题解决 { } } }
编译能通过在catch里面处理了异常,不用函数上声明
没有catch就是没有处理
记住一点:catch是用来处理异常,没有cath就代表异常没处理过,如果该异常时检测时异常,那么必须声明。
class Demo { public void method() throws Exception { try { throw new Exception(); } finally { //关闭资源 } } }
编译能通过
异常在子父类覆盖中的体现:
1. 子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法只能抛出父类的异常或者该异常的子类。
2. 如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3. 如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。如果子类方法发生了异常,就必须进行try处理,绝对不能抛
class AException extends Exception { } class BException extends AException { } class CException extends Exception { } /* Exception --AException --BException --CException */ class Fu { void show() throws AException { } } class Zi extends Fu { void show() throws AException //或BException 不能抛 CException }
包(package)
1.对类文件进行分类管理
2.给类提供多层命名空间
3.写在程序文件的第一行
4.类名的全称是报名.类名
5.包也是一种封装形式
总结:
包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。
不同包中的子类还可以直接访问父类中被protected权限修饰的成员。
包与包之间可以使用的权限只有两种 public 和 protected
publc protected default private
同一个类中 ok ok ok ok
同一个包中 ok ok ok no
子类 ok ok no no
不同包中 ok no no no
为了简化类名的书写,使用一个关键字,import
Import导入的是包中的类。
c:\\myclass\packb\DemoA.class
c:\\myclass\packb\hah\DemoZ.class
如果写import packb.* 不能直接使用DemoZ 因为只能导入packb下的类,不能导入packb下子包的类
建议不要写通配符*,需要用到包中的哪个类,就导入哪个类
类重名时使用时必须加包名
建议定义包名不要重复,可以使用url来完成定义,url是唯一的。
package cn.itcast.demo
package cn.itcast.test
jar包
java的压缩包
方便项目的携带
方便使用,只要在class中设置