Java基础 异常-finally 包package

异常

finally

  • finally代码块:定义一定执行的代码
  • 通常用于关闭资源。
package 异常.Finally;

class FuShuException extends RuntimeException
{
    FuShuException(String msg)
    {
        super(msg);
    }
}
class Demo
{
    int div(int a,int b)
    {
        if(b<0)
            throw new FuShuException("出现了除数为负数");
        if(b==0)
            throw new ArithmeticException("被零除了 /0");
        return a/b;
    }
}

public class ExceptionDemo5 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo d=new Demo();
        try
        {
            int x=d.div(4, -1);
            System.out.println("x="+x); 
        }
        catch(FuShuException e)
        {
            System.out.println(e.toString());
            return;
        }
        finally
        {
            System.out.println("finally");//finally中存放的是一定会执行的代码
        }
        System.out.println("Over"); 
    }

}

输出:
异常.Finally.FuShuException: 出现了除数为负数
finally


异常-处理语句其他格式

第一个格式:

try
{
}
catch()
{
}

第二个格式:

try
{
}
catch()
{
}
finally
{
}

第三个格式:

try
{
}
finally
{
}

异常-覆盖时的异常

  1. 子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常,或者该异常的子类。
  2. 如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集
  3. 如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。
  4. 如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。
package 异常.覆盖异常;


class AException extends Exception
{

}
class BException extends AException
{

}
class CException extends Exception
{

}
class Fu
{
    void show()throws AException
    {

    }
}
class Zi extends Fu
{
    void show()throws AException
    {

    }
}
public class ExceptionDemo7 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}

异常总结

异常:

  • 是对问题的描述,将问题进行对象的封装。

异常体系:

  • Throwable
    • Error
    • Exception
      -RuntimeException

异常体系的特点:

  • 异常体系中的所有类以及建立的对象都具备可抛性。
  • 也就是说可以被throw和throws关键字所操作。
  • 只有异常体系具备这个特点。

throw和throws的用法:

throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。

当函数内有throw抛出异常对象,并未进行try处理。必须要在函数上声明,否则编译失败。
注意:RuntimeException除外。也就是说,函数内如果抛出RuntimeException异常,函数上可以不用声明。

如果函数声明了异常,调用者需要进行处理。处理方法可以throws可以try.

异常有两种:
编译时被检测异常

  • 该异常在编译时,如果没有处理(没有抛也没有try),编译失败。

运行时异常(编译时不检测),

  • 在编译时,不需要处理,编译器不检查。
  • 该异常的发生,建议不处理,让程序停止。需要对代码进行修正。

包(package)

  • 对类文件进行分类管理
  • 给类提供多层命名空间
  • 卸载程序文件的第一行
  • 类名的全程是 包名.类名
  • 包也是一种封装形式

javac -d . PackageDemo.java
-d命令指定生成的class文件的存放目录。
.点号代表当前目录

关键词package
使用 package可以声明 该文件属于哪个包

package pack;//声明包名
public class Test{
    public void show()
    {
        System.out.println("show");
    }
}

import关键词

通过import关键词可以简化类名的书写,

import pack.*;//通过*通配符导入包中的所有类
import pack.pa.*;//导入子包中的类
class Demo
{
    public static void main(String[] args)
    {
        Test t=new Test();
        t.show();
    }
}

建议不要写通配符 * ,需要用到包中的哪个类,就导入哪个类。

jar包

  • Java的压缩包
    • 方便项目的携带
    • 方便于使用,只要在classpath设置jar路径即可
    • 数据库驱动,SSH框架等都是以jar包体现的

通过命令:
jar -cf 目标文件.jar 源文件目录1 源文件目录2
可以生成一个 目标文件.jar 包

-v参数,显示详细过程

jar -tf 目标文件.jar 显示jar包里的所有文件及目录

jar -xf 目标文件.jar 解压jar包中的文件

\Java\jdk1.6.0_43\lib\tools.jar
tools.jar\sun\tools\javac
存放了编译器javac的class文件

Java\jdk1.6.0_43\src.zip
存放了java所有类的源代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值