JAVA程序员笔记 第14篇——异常

23 篇文章 0 订阅
20 篇文章 0 订阅

异常

异常的定义:
程序运行过程中出现的错误,称为异常。也就是程序运行过程中出现了不正常现象,导致代码运行不下去,进而导致程序的中断。

在Java中,把各种异常现象抽象形成了异常类。

Error与Exception

Error表示不希望被程序捕获或者是程序无法处理的 错误。
Exception,它表示用户程序可能捕捉的异常情况或者说是程序可以处理的异常。同时Exception又分为运行时异常(RuntimeException)和非运行时异常。

具体分类如图,认识即可:
在这里插入图片描述

异常的处理

throw

之前的throw 抛出异常,用在出现异常的位置,或者类上往外抛出,抛给父类。
但异常实际上并没有被解决

try - catch - finally

try{
	
	//代码执行区域
	
}catch(Exception e){
	
	//异常处理区域
	
}finally {
		
	//无论如何,都会执行的代码块
 }

/**
     * throws 是 写在 方法的声明上的, 将方法产生的异常 抛给上层调用者
     *
     * @throws Exception
     */
    public static void test() throws Exception{

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

        try{
            // 可能会产生异常
            Date parse = df.parse("1990-11-11");

        }catch(Exception e) {
            // 捕获异常, throw 抛出一个异常
            // throw 在方法中使用的,throw 后跟一个异常对象, 将异常对象 抛给他所在的方法
            throw e;
        }finally {
	//解决异常的方案
	//无论如何,都会执行的代码块
	 }
 }
try - with
// 使用 try-with 结构,更加优雅的关闭资源
        // try-with 只能关闭 具有 close() 方法的资源

        try(FileInputStream in = new FileInputStream("D:/xxx.txt")) {

            byte[] bytes = in.readAllBytes();

            System.out.println(new String(bytes));

        }catch(Exception e){
            e.printStackTrace();
        }

自定义异常

自定义一个异常类,并 ALT+INSERT 提供这四个方法

public class ByteNumberOutOfRoundException extends RuntimeException{

    public ByteNumberOutOfRoundException() {
        super();
    }

    public ByteNumberOutOfRoundException(String message) {
        super(message);
    }

    public ByteNumberOutOfRoundException(String message, Throwable cause) {
        super(message, cause);
    }

    public ByteNumberOutOfRoundException(Throwable cause) {
        super(cause);
    }
}

然后测试(下面用的不是上面这个异常类)

Array<Integer> array = new DynamicArray<>();
        array.add(1);
        array.add(2);

        try {
            System.out.println(array.getele(1000));

        }catch (Exception e){
            throw new DynamicArrayException("总而言之,就是错了");
        }

在这里插入图片描述

断言(Assert)

断言的运用场景:

1.变量值如果很确定是某个值,则可以用断言。
2.可在正常情况下程序不会到达的地方放置断言,例如没有default的switch,则default可加上断言。
3.测试前置条件、后置条件
4.一个内部方法,返回布尔值,当检查类状态正常时返回true。

assert expression1:

public static void main (String[] args) {
   boolean flag = 1>2;
   assert flag;
}

assert expression1:expression2:

public static void main (String[] args) {
	boolean flag = 1>2;
	assert flag : "flag is false 断言失败";
}

日志的话,等周末有空了补出来

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值