A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一步一脚印 中级黑马   /  2013-11-15 09:54  /  1460 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. static void test() throws Error {
  2.          if (true) throw new AssertionError();
  3.                  System.out.print(“test “)
  4. }
  5. public static void main(String[] args) {
  6.         try { test(); }
  7.         catch (Exception ex) { System.out.print(“exception “);
  8.          System.out.print(“end”)
  9. }
复制代码
test方法声明抛出Error, 那抛出的AssertionError异常, 在主函数Exception应该捉不都的吧。???

3 个回复

倒序浏览
hel 中级黑马 2013-11-15 14:42:01
沙发
static void test() throws Error {
         if (true) throw new AssertionError();
                 System.out.print(“test “)
}

你在这里抛出的是error
那他捕获的是异常,所以捕获不到
回复 使用道具 举报
Throwable 两个子类:Error和Exception
Error:该异常不可控的,致命的错误,不能通过代码解决的问题,底层或硬件问题.
Exception:可控的,通常可以Throw向上抛出或try catch捕获该异常.
catch (Exception ex)  你catch Exception之后只能抛出属于Exception子类的异常,Error和Exception都不是一个异常体系的所以捕获不到Error。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马