[HIT]哈工大2021软件构造知识点理解(3)——异常与断言

        首先理解Java中异常的组织结构。Java中的异常Exception是一个类,继承自Throwable,Throwable还派生出Error类。Exception子类一般分为RuntimeException和一般性异常。

RuntimeException=运行时异常=系统异常=uncheckedException,可以编译通过,此类异常一定是程序员的问题,常见如被0除异常,是程序健壮性低的体现,打印异常信息即可。

一般性异常=受控异常=编译时异常=checkedException,此类异常必须显示的捕获/传递否则无法编译通过。

        然后理解,捕获和抛出的有关概念:

1)捕获:try-catch-finally语句,try捕获异常,try接口会对可能含有异常的代码进行检查,若出现了异常信息,将异常传递给后面的catch()块进行处理,catch括号内为异常类,try后面可以跟多个catch块,对应不同的异常处理。try-catch类似于循环中的if-break,当异常出现时后续代码不会执行。而finally块是不管异常与否都会执行,也就是若出现异常,停止继续执行try块转而执行finally块,而若未出现异常,执行完try块将执行finally块。由于try-catch的break性质,一般先截获子异常,再截获父异常。由具体到抽象,由小范围到大范围。

2)抛出:注意,有两种语句:throws和throw。throws语句,一般在方法的声明处,跟在函数名后参数前。“出错了就不管了”的赖皮属性声明此方法可能产生的所有异常,不作处理将异常向上传递,异常处理交给调用者。throw用来在方法体内部抛出具体的异常,后面跟异常对象名,将错误信息真正的抛出。异常对象后面一般会跟getMessage()方法和printStackTrace()方法,二者区别在于getMessage会打印异常描述信息如日志信息,而printStackTrace会打印堆栈信息。

        有了这些概念,assert就很容易了。

assert语句常见有两种:

assert condition;//condition为真则无事发生,为假则抛出一个AssertionError对象

assert condition:message;//condition为真无事发生,为假会将message传入AssertionError进行错误信息输出

须注意的是,assert在IDE常规工作模式下并不会生效。

        自定义异常也是考点的一部分,一般来说是一个继承自Exception的类,只含有无参数构造方法和有参数构造方法两个方法,如下:

public class MyException extends Exception{
    public MyException(){
        super();
    }
    public MyException(String msg){
        super(msg);
    }
}

调用时需使用

throw new MyException(message);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值