黑马程序员技术交流社区

标题: 问一下try{}catch(){} [打印本页]

作者: 吴刚—heima    时间: 2013-5-30 13:12
标题: 问一下try{}catch(){}
我在学习异常的时候发现,我们如果要检测异常一般情况是要抛出异常,但是这个语句并没有看到抛出语句,而直接捕获,请问这条语句是不是隐含了抛出异常,如果不是那么这是什么情况?
作者: 郭天龚    时间: 2013-5-30 15:51
  1.try{}catch(){} 没有隐式抛出任何异常。
  2.try{实现某中功能的代码。(这个功能代码可能会出现异常)} 当执行try块里的代码时发生了异常,系统会自动生成一个异常对象(把异常发生的代码行号,类别封装在这个对象中)
                                                                                     该对象被提供给java的运行时环境,这是java的运行时环境会寻找能处理该异常的catch语句块,交给他并且处理该异常。
    catch(Exception e){出现异常后要进行某种处理的代码块}
作者: 卢祥洲    时间: 2013-5-30 15:54
throws和throw的区别?throws使用在函数上;throw使用在函数内。
class A{
public function() throws Exception{
try{
...
throw new Exception();
}catch(){}
}
}

作者: 袁梦希    时间: 2013-5-30 17:16
如果帖子没有问题了,请把帖子的类型改为“已解决”
如果不会改,请看我的个性签名
作者: 逝者轨迹    时间: 2013-5-30 20:10
try{}catch{}的作用是捕获try{}代码块中的异常,只对try{}起作用
作者: 李润根    时间: 2013-5-30 21:17
这句没有隐含了抛出异常,try块捕捉异常,cathc块,可以直接处理异常,也可以抛出异常让调用者处理异常(throw)
作者: shiweiCao    时间: 2013-5-31 19:44
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());
                }
               

        }

}  捕获和抛出是两种不同的处理方式 .
作者: 李健09    时间: 2013-5-31 21:19
try{}catch{}是在try程序块中捕捉可能出现的异常并在catch块中作处理;try{} 表示该大括号名括的语句有可能抛出异常,如果捕捉到的异常,则由catch(...)进行识别并处理.
作者: 十字路口    时间: 2013-5-31 21:49
在try中写可能会出现异常的代码,也就是在try中就可以抛出异常,当有异常抛出时,catch就会自动捕获。
当然你也可以直接抛出不用捕获不过要在方法名后面声明throws Excpetion(要抛出异常的类),或在main中声明,这样就是让虚拟机catch你的异常,不过最好不要这样做。。
作者: 曹睿翔    时间: 2013-6-2 10:41
如果问题已经解决,再次编辑,修改主题类型为已解决,方便大家查看
否则继续追问




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2