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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴刚—heima 中级黑马   /  2013-5-30 13:12  /  1333 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在学习异常的时候发现,我们如果要检测异常一般情况是要抛出异常,但是这个语句并没有看到抛出语句,而直接捕获,请问这条语句是不是隐含了抛出异常,如果不是那么这是什么情况?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

9 个回复

倒序浏览
  1.try{}catch(){} 没有隐式抛出任何异常。
  2.try{实现某中功能的代码。(这个功能代码可能会出现异常)} 当执行try块里的代码时发生了异常,系统会自动生成一个异常对象(把异常发生的代码行号,类别封装在这个对象中)
                                                                                     该对象被提供给java的运行时环境,这是java的运行时环境会寻找能处理该异常的catch语句块,交给他并且处理该异常。
    catch(Exception e){出现异常后要进行某种处理的代码块}

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
throws和throw的区别?throws使用在函数上;throw使用在函数内。
class A{
public function() throws Exception{
try{
...
throw new Exception();
}catch(){}
}
}

评分

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

查看全部评分

回复 使用道具 举报
如果帖子没有问题了,请把帖子的类型改为“已解决”
如果不会改,请看我的个性签名
回复 使用道具 举报
try{}catch{}的作用是捕获try{}代码块中的异常,只对try{}起作用
回复 使用道具 举报
这句没有隐含了抛出异常,try块捕捉异常,cathc块,可以直接处理异常,也可以抛出异常让调用者处理异常(throw)
回复 使用道具 举报
java中对于异常的处理有两种:
  1 捕获
   try{
                  //有可能出现问题的代码
   }catch(异常类型 变量){
           //处理问题的位置
   }finally{ //不是必须有
                  //强制执行一次的代码
          }
  2 抛出 throws

看看这段代码. public class Test7 {
        /**
         * main 主方法
         * 程序入口.
         * */
        public static void main(String[] args) throws Exception {
//                                 主方法中还可以抛出异常.
                try {
//                        有可能出现异常的代码,如果出现多句,从抛出异常处开始后面的将不再执行.
                        int i = 0;
                        //这里如果出现异常,那么后面的将不再执行.
                        System.out.println(10 / i);
                        System.out.println("这里的语句执行了吗?-----");
                } catch (Exception e) {
//                        如果try中抛出异常,catch用来捕获和处理异常.打印出异常信息或者自定义语句.
                        System.out.println(e.getMessage());
                        System.out.println("除数不能为0!------");
                } finally{
//                        finally中的语句,是无论是否抛出异常都会被执行到.  特殊情况:system.exit(0);停止虚拟机的情况下不会执行到.
                        System.out.println("finally");
                }
               
                try{
                        throw new Exception("手动抛出异常");// 一般用来抛出一个自己定义的异常.
                }catch(Exception e){
                        System.out.println(e.getMessage());
                }
               

        }

}  捕获和抛出是两种不同的处理方式 .
回复 使用道具 举报
try{}catch{}是在try程序块中捕捉可能出现的异常并在catch块中作处理;try{} 表示该大括号名括的语句有可能抛出异常,如果捕捉到的异常,则由catch(...)进行识别并处理.
回复 使用道具 举报
在try中写可能会出现异常的代码,也就是在try中就可以抛出异常,当有异常抛出时,catch就会自动捕获。
当然你也可以直接抛出不用捕获不过要在方法名后面声明throws Excpetion(要抛出异常的类),或在main中声明,这样就是让虚拟机catch你的异常,不过最好不要这样做。。
回复 使用道具 举报
如果问题已经解决,再次编辑,修改主题类型为已解决,方便大家查看
否则继续追问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马