传智播客——毕向东25--第10天总结-9

1.异常 finally:
finally
{一定会被执行的代码块 }
public void method()throws NoException
{
    连接数据库
    数据库操作://throw new NoException();
    关闭数据库://关闭资源

    try
    {
        连接数据库
        数据操作
    }
    catch (SQLException e)
    {
        数据库的异常处理;
        throw new NoException();
    }
 finally
 {
        关闭数据库;
 }
}
2.异常处理的其他语句格式:
 a.try....catch
 b.try....catch....finally
 c.try....finally
 注意:catch是用于处理异常,如果没有catch就代表异常没有被处理过,必须在函数上声明;(RuntimeException异常类除外)
 
 3.异常覆盖时的特点:
   a.子类在覆盖父类时,如果父类的方法跑出异常,那么子类的覆盖方法,只能跑出父类的异常或该异常的子类
   b.如果父类跑出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集
   c.如果父类或接口的方法中没有异常抛出,那么子类在覆盖方法时也不可以跑出异常、如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。
  class AException extends Exception
  {......}
  class BException extends Exception
  {......}
  class CException extends Exception
  {......}
  class Fu
  {
   void show()throws AException
   {......}
  }
  class Test
  {
   void function(Fu f)
   {
    try
    {
         f.show();
    }
    catch (AException)
    {......}
   }
  }
  class Zi extends Fu
  {
       void show()throws AException
   {......}
  }
  class Demo
  {
       public static void main(String[] args)
       {
           Test t=new Test();
          t.function(new Zi());
       }
  }
异常总结:
  a.异常体系:
      Throwable
      |---Error
   |---Exception
           |---RuntimeException
   b.throw和throws的用法区别:
      throw定义在函数内,用于抛出异常对象
   throws定义在函数上,用于抛出异常类,可以抛出多个,用逗号个隔开
   c.当函数内容有throw抛出异常对象,并且未进行try处理时,必须要在函数上声明,否则编译失败;(RuntimeException除外)
   d.异常处理语句:
   try
   {
       需要被检测的代码;
   }
   catch (异常类 变量)
   {
    处理异常的代码;
   }
   finally
   {
    一定会执行的代码;
   }
  注意:finally有一种情况不会执行:System.exit(0);
  e.自定义异常类:
  定义类继承Exception或者RuntimeException
  可用父类定义好的构造函数
    class MyException extends Exception
    {
         MyException (String message)
         {
               super(message);
         }
    }
 f.遗产的处理原则:
      1.处理方法:try和throws
   2.调用到跑出异常功能时,跑出几个就处理几个

void test()throws BException   //声明B异常
{
      try
      {
             throw new AException();
      }
     catch (AException e)
     {
            throw new BException(); //抛出B异常
     }
}

4.包 package
  包名所有字母小写
  关键字:package pack;
  package pack;
  class PackageDemo
  {
         public static void main(String[] args)
          {
              System.out.println("Hello PackageDemo");
          }
  }

  >javac -d c:\myclass PackageDemo.java
  >java pack.PackageDemo
 
 包与包之间的访问
 protected:受保护的(只能子父类之间)

package pack;
class PackageDemo
{
        public static void main(String[] args)
         {
             packa.DemoA d=new Packa.DemoA();
            d.show();
         }
}
package packa;
public class DemoA extends packb.DemoB
{
      public void show()
      {
           System.out.println("DemoA run");
           method();
     }
}
package packb;
public class DemoB
{
       protected void method()
       {
            System.out.println("DemoB run")
       }
}
编译时从调用者开始编译:DemoB--DemoA--Demo

                      public      protected      default      private
同一个类中       ok             ok              ok              ok                 
同一个包中       ok             ok              ok                           
子类                  ok             ok                                  
不同包中           ok

导入import:
      为了简化类名的书写,使用一个关键字,import
例:import packb.*;//import 导入的是packb包中的类

创建jar包:
  >jar -cf hh.jar packa packb
查看jar包中的文件:
>jar -tf hh.jar 
>jar -tf a.jar   >c:\1.txt   //导到>c:\1.txt中

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值