异常与包

异常体系

Throwable
    |---Error   
    |---Exception
        |---RuntimeException

异常格式

try 
{
    //可能出现异常的代码
}
catch ()
{
    //对异常的处理
}
finally
{
    //一定执行的代码,通常用于释放资源
}

相关方法

String getMessage() //异常信息

String toString() //异常名称:异常信息

void printStackTrace() //异常名称,异常信息,异常出现位置

throw和throws

  1. throw使用于函数内,抛出异常对象
  2. 问题可处理时,需在函数体上声明throws [抛出的异常类型],一方面告诉调用者可能发生的异常要进行捕捉,另一方面当调用者不处理时直接让程序编译出错,让可能发生的问题提前暴露,否则不声明throws会将问题带到运行时期。

自定义异常

  1. 当程序中出现特有含义的问题时,根据面向对象的特点,将问题封装成自定义异常类,这样可以让抛出的异常更具体,相应的处理方式也更具体。自定义异常类要继承自Exception。
  2. 自定义异常类在构造时,由于父类已经定义好了关于异常信息的处理方式,因此只需将异常信息通过super(message)传递给父类,实现对异常信息的记录和获取。
class MyException extends Exception
{
    /*Exception中对异常信息的处理
    private String message;
    Throwable(String message)
    {
        this.message = message;
    }
    public String getMessage()
    {
        return message;
    }
    */

    //子类只需直接调用初始化异常信息
    FuShuException(String msg)
    {
        super(msg);
    }
}

RuntimeException和Exception的区别

  1. RuntimeException是运行时异常,当异常发生后,考虑到调用者无法进行处理,希望程序直接停下来,对代码进行修正,这时就可以抛出该异常或者自定义子类异常,这类异常不用在函数体上声明。
  2. Exception是编译时异常,当异常发生后,判断到调用者可以处理,就抛出该异常或者自定义子类异常,这类异常需在函数提上声明,要求调用者处理。

异常在子父类覆盖中的特点

  1. 子类覆盖父类异常函数,子类不能比父类发生更多异常。
  2. 若父类抛出异常,子类覆盖时,只能抛出父类异常或者该异常的子类。
  3. 若父类抛出多个异常,子类覆盖时,只能抛出父类异常的子集。

  1. 包与包之间可以使用的权限只有public和protected。
  2. 不同包之间的访问,被访问包中的类和类中的成员,需要被public修饰。不同包中的子类,还可以直接访问父类中被protected修饰的成员。
            public  protected       default     private
同一个类     ok      ok               ok         ok
同一个包     ok      ok               ok    
子类         ok      ok
不同包       ok


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值