【10】面对对象6_异常格式及finally,包packge,import,jar包操作


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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值