赞
踩
4.11.7finally代码块
finally代码块:定义一定执行的代码,通常用于关闭资源。
练习一:finally代码块的应用
- /*
- 连接数据库;
- 数据操作;//thrownew SQLException();
- 关闭数据库;//该动作,无论数据操作是否成功,一定要关闭资源。
- */
-
- class NoException extends Exception
- {
- }
-
- public void method()throws NoException
- {
- try
- {
- 连接数据库;
- 数据操作;//throw new SQLException();
- }
- catch(SQLException e)
- {
- 会对数据库进行异常处理;
- throw new NoException();
-
- }
- finally
- {
- 关闭数据库;//该动作,无论数据操作是否成功,一定要关闭资源。
- }
- }
4.11.8异常的常见格式:
- //第一个格式:
- try
- {
-
- }
- catch ()
- {
- }
-
- //第二个格式:
- try
- {
-
- }
- catch ()
- {
- }
- finally
- {
-
- }
-
- //第三个格式:
- try
- {
-
- }
- finally
- {
- }
- //记住一点:catch是用于处理异常。如果没有catch就代表异常没有被处理过,如果该异常是检测时异常。那么必须声明。
-
- class Demo
- {
- public void method()
- {
- try
- {
- throw new Exception();
- }
- finally
- {
- //关资源。
- }
- }
- }
练习二:用异常处理出现的问题
- /*
- 有一个圆形和长方形。
- 都可以获取面积。对于面积如果出现非法的数值,视为是获取面积出现问题。
- 问题通过异常来表示。
- 现有对这个程序进行基本设计。
-
- */
-
- class NoValueException extendsRuntimeException
- {
- NoValueException(Stringmessage)
- {
- super(message);
- }
- }
-
- interface Shape
- {
- void getArea();
- }
-
- class Rec implements Shape
- {
- private int len,wid;
-
- Rec(intlen ,int wid)//throws NoValueException
- {
- if(len<=0|| wid<=0)
- throw new NoValueException("出现非法值");
-
- this.len= len;
- this.wid= wid;
- }
-
- public void getArea()
- {
- System.out.println(len*wid);
- }
- }
-
-
- class Circle implements Shape
- {
- private int radius;
- public static final double PI = 3.14;
-
- Circle(intradius)
- {
- if(radius<=0)
- thrownew NoValueException("非法");
- this.radius= radius;
- }
-
- public void getArea()
- {
- System.out.println(radius*radius*PI);
- }
- }
-
- class ExceptionTest1
- {
- public static void main(String[] args)
- {
- Rec r = new Rec(3,4);
- r.getArea();
-
- Circle c = new Circle(-8);
-
- System.out.println("over");
- }
- }
4.12包(package)
1.对类文件进行分类管理。
2.给类提供多层命名空间。
3.写在程序文件的第一行。
4.类名的全称的是 包名.类名。
5.包也是一种封装形式。
4.12.1 classpath
1.给JVM提供的一个环境变量。
2.指定类或者包所在的路径。
3.classpath变量值的最后有分号与无分号的区别。
总结:
包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。
不同包中的子类还可以直接访问父类中被protected权限修饰的成员。
4.12.2 import
为了简化类名的书写,使用一个关键字,import.
import 导入的是包中的类。
建议,不要写通配符 * ,需要用到包中的哪个类,就导入哪个类。
练习三:import,包(package)练习
-
-
- package pack;
-
- /*
-
- c:\myclass
-
- c:\myclass\packb\DemoA.class
- c:\myclass\packb\haha\DemoZ.class
-
- import packb.*;
- import packb.haha.*;
-
-
- 建立定包名不要重复,可以使用url来完成定义,url是唯一的。
-
- www.itcast.cn
-
- package cn.itcast.demo
- package cn.itcast.test
-
-
- */
-
- import packb.haha.hehe.heihei.*;
- import packa.*;
- import packb.*;
-
-
- class PackageDemo
- {
- public static void main(String[] args)
- {
-
- DemoC c = new DemoC();
-
- // packa.DemoA d = new packa.DemoA();
- // d.show();
-
- // packb.DemoB d = new packb.DemoB();
- // d.method();
- }
- }
-
- /*
-
- PackageDemo.java:8: 找不到符号
- 符号:类 DemoA
- 位置:类 pack.PackageDemo
- DemoA d = new DemoA();
- ^
- PackageDemo.java:8: 找不到符号
- 符号:类 DemoA
- 位置:类 pack.PackageDemo
- DemoA d = new DemoA();
- ^
- 2 错误
-
- 错误原因:类名写错。
-
- 因为类名的全名是:包名.类名
-
- PackageDemo.java:8: 软件包 packa 不存在
- packa.DemoA d = newpacka.DemoA();
- ^
- PackageDemo.java:8: 软件包 packa 不存在
- packa.DemoA d = newpacka.DemoA();
- ^
- 2 错误
-
-
- 错误原因:packa包不在当前目录下
- 需要设置classpath,告诉jvm去哪里找指定的packa包。
-
- PackageDemo.java:8: packa.DemoA 在 packa 中不是公共的;无法从外部软件包中对其进
- 行访问
- packa.DemoA d = newpacka.DemoA();
- ^
- PackageDemo.java:8: packa.DemoA 在 packa 中不是公共的;无法从外部软件包中对其进
- 行访问
- packa.DemoA d = newpacka.DemoA();
- ^
- 2 错误
-
- 错误原因:有了包,范围变大,一个包中的类要被访问,必须要有足够大的权限。
- 所以被访问的类要被public修饰。
-
-
-
- PackageDemo.java:9: show() 在 packa.DemoA中不是公共的;无法从外部软件包中对其进
- 行访问
- d.show();
- ^
- 1 错误
-
- 错误原因:类公有后,被访问的成员也要公有才可以被访问。
-
-
- java.lang : java的核心包 jdk1.2版本以后,该包中的类自动导入。
- java.awt: 用于制作图形界面。
- java.io:input output 用于操作设备上的数据。
- java.util : 这里定义是java的工具类。集合,日期。
- java.net:用于网络通讯的。
- java.applet: application let server let servlet java server page jsp
-
- class haha implements Servlet
-
- class hehe extends HttpServlet
-
- */
4.12.3 Jar包
Java的压缩包
方便项目的携带。
方便于使用,只要在classpath设置jar路径即可。
数据库驱动,SSH框架等都是以jar包体现的。
4.12.4 Jar包的操作
通过jar.exe工具对jar的操作。
创建jar包
jar -cvf mypack.jar packa packb
查看jar包
jar -tvf mypack.jar [>定向文件]
解压缩
jar -xvf mypack.jar
自定义jar包的清单文件
jar –cvfm mypack.jar mf.txt packa packb
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。