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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张智文 中级黑马   /  2013-8-9 14:04  /  1691 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lilylikejack 于 2013-8-9 17:15 编辑
  1. class  ExceptionDemo9
  2.         {
  3.         public static void func()
  4.         {
  5.                 try
  6.                 {
  7.                         throw new Exception();
  8.                 }
  9.                 finally
  10.                 {
  11.                         System.out.println("b");
  12.                 }
  13.         }
  14.         public static void main(String[] args)
  15.         {
  16.                 try
  17.                 {
  18.                         func();
  19.                         System.out.println("a");
  20.                 }
  21.                 catch (Exception e)
  22.                 {
  23.                         System.out.println("c");
  24.                 }
  25.                 System.out.println("d");
  26.         }
  27. }

复制代码
自己看不出哪有问题,编译失败 异常部分听的也比较纠结 请具体给说说吧。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

3 个回复

倒序浏览
很明显,throw new Exception();有问题,因为你抛出的异常是一个Exception,这个异常要不
        必须在函数上声明出去throws Exception,要不就要try{}catch(){}处理掉!
        你这里用到的是try{}finally{}结构不是处理结构。
        throw new RuntimeException("中断运行");这样写。抛RuntimeException是不用声明和try{}catch(){}的
        try{}中放的代码是可能抛出异常!会出错的代码,你在try{}中直接抛了!

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
楼主在抛出异常后没有在方法中声明。
在java的异常处理机制中,有两种异常处理方式,一种是throw往外抛异常,一种是try...catch...捕获异常处理异常。
异常分两种大的异常类型,运行异常和受检查异常,这两种异常的区别:
1、运行时异常RunTimeException
运行异常的特点是Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。
2、受检查异常
除了运行异常外,其他异常都属于受检查异常,这种异常的特点是要么用try...catch捕获处理,要么用throws语句声明抛出,否则编译不会通过。
对于运行异常,建议不要用try...catch...捕获处理,应该在程序开发调试的过程中尽量的避免,当然有一些必须要处理的,自己知道了那个部分会出现异常,而这种异常你要把它处理的你想要的结果,例如:空值处理。
关于受检查异常,建议进行try...catch...处理。
异常处理:
1、既然捕获了异常,就要对它进行适当的处理。不要捕获异常之后又把它丢弃,不予理睬。
2、在catch语句中尽可能指定具体的异常类型,必要时使用多个catch。不要试图处理所有可能出现的异常。
3、保证所有资源都被正确释放。充分运用finally关键词。
4、在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。例如当前正在执行的类、方法和其他状态信息,包括以一种更适合阅读的方式整理和组
织printStackTrace提供的信息。
5、尽量减小try块的体积。
6、全面考虑可能出现的异常以及这些异常对执行流程的影响。
回复 使用道具 举报
本帖最后由 panningwjr 于 2013-8-9 17:43 编辑


上面就是你的代码,报错是没有处理的异常类型
就是说抛出了一个异常,但是没有进行处理
有两种方式:一,增加catch块来获取并且处理这个异常

二,继续抛出异常,交给调用这个方法的代码去处理

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