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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在什么情况下,try模块和catch模块设计在一个方法内?在什么情况下,try模块和catch模块不设计在一个方法内

2 个回复

正序浏览
这个是不可以的!因为try是捕捉异常,而且catch是处理异常,我想请问的是如果说将这个两个分开放在两个不同的方法中
是不可行的,因为这样只找到了异常但是处理不到会报错。所以我个人认为他们都是在同一个方法中不会有不在同一个方法中的时候
回复 使用道具 举报
本帖最后由 赵兵锋 于 2012-6-10 11:05 编辑
  1. public static void main(String[] args) {
  2.                 try {
  3.                         f1();//因为f1在方法声明中已表明可能抛出异常,其内部不会处理掉这个异常,所以在这里需要捕获处理
  4.                 } catch (ClassNotFoundException e) {
  5.                         e.printStackTrace();
  6.                 }
  7.                 f2();//f2内部捕获了异常,已经处理掉了,所以这里不需要再捕获异常
  8.         }

  9.         public static void f1() throws ClassNotFoundException {//f1方法直接把异常抛出去了,让调用这个方法的方法;来处理
  10.                 Class.forName("ss");
  11.         }

  12.         public static void f2() {
  13.                 try {
  14.                         Class.forName("ss");
  15.                 } catch (ClassNotFoundException e) {//f2方法用try-catch捕获了异常,那调用f2的方法不会知道f2可能抛出异常
  16.                         e.printStackTrace();
  17.                 }
  18.         }
  19. 对于try和catch什么时候不在同一个方法体,try和catch一定在同一个方法体中,他们是紧密相连的,一一搭配的。虚拟机在方法体中发现try{后,会在此方法体接下来的代码中期待出现}catch (异常){}或是}finally{},若在下一个匹配的}后没有发现catch后finally,就会报错。
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马