Java——异常和断言

异常

  1. 编辑 -> 编译 -> 链接 -> 运行
  2. 异常的层次结构:在这里插入图片描述
  3. 异常的分类
  • 检查性异常:编译的时候会被检查到(必须解决:try…catch)
  • 非检查异常:编译的时候不会被检查到,运行的时候会被检查到(Error和RuntimeException都是非检查异常)
  1. 异常的处理
  • 捕获异常(try——catch——finally)当前方法有能力处理异常,捕获并处理它
    catch、finally不可以同时省略
    demo

    try {//try块中存放可能出现异常的代码
    	1. 如果抛出异常,从抛出的异常的代码行停止运行try块中的其他代码,
    	   继续执行catch块中的代码
    	2. 如果没有抛出异常,执行完try块后不执行catch块,执行catch块后面的内容
    } catch(要处理的异常和标识符) {
    	1. catch块中的小括号需要加上一种错误类型
    	2. catch的执行要看异常的类型,只有指定的类型才可以使得catch块执行
    	3. 存放的是出现异常之后的代码
    } catch() {//执行完其中一个catch之后,其他的catch语句会被忽略(子类一定要在父类前面)
    	...
    } 
    ....
    ....
    } finally {
    	1. 回收资源,<final的时候可以没有catch>
    	2. 不论try块是否检查出异常,finally语句都会执行
    } 
    
  • 抛出异常(throw、throws)当前方法没有能力处理异常,交由方法调用者来处理
    demo

    public void doA(int a) throws Exception1,Exception3 {//throws是方法可能抛出的异常的声明,在声明方法的同时,表示该方法可能抛出的异常
    	try {
    		......
    	} catch (Exception1 e) {
    		throw e;
    	} catch (Exception2 e) {
    		System.out.println("出错了");
    	}
    	if(a!=b) {
    		throw new Exception3("自定义异常");
    	}
    }
    	
    

常见异常

  1. NullPointerException:空引用异常
  2. NumberFormatException:数值类型异常
  3. ClassNotFoundException:没有程序员要用到的类
  4. ArrayIndexOutOfBoundsException:访问超出索引
  5. ClassCastException:类型转换异常

断言

断言语句不会永远执行,可以屏蔽也可以启用
断言语句不可以修改变量和改变方法的返回值

发布了33 篇原创文章 · 获赞 5 · 访问量 685

猜你喜欢

转载自blog.csdn.net/u013140841/article/details/103873375
今日推荐