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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 欧德林 中级黑马   /  2012-4-1 18:26  /  2134 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  ExceptionDemo9
        {
        public static void func()
        {
                try
                {
                        throw new Exception();
                }
                finally
                {
                        System.out.println("b");
                }
        }
        public static void main(String[] args)
        {
                try
                {
                        func();
                        System.out.println("a");
                }
                catch (Exception e)
                {
                        System.out.println("c");
                }
                System.out.println("d");
        }
}


这个编译是失败的,为什么呢 ?
虽然异常看过了,但是对于这章知识还很模糊。
以后这个异常能遇到吗? 异常不是计算机给我们的吗?自己搞一个异常做撒 ?

5 个回复

倒序浏览
因为你执行到func方法的时候,抛出了一个Exception异常,没有进try catch处理,因此编译会失败,你可以抛出一个RuntimeException,然后再编译运行的时候就没有问题了,并且结果是:b c d,因为func方法抛出了异常,所以会在main方法里执行catch块的代码,而不会打印a
回复 使用道具 举报
抛出了异常(非RuntimeException) 没有在本函数内捕捉处理,
所以要在方法func上声明一下,让其他调用者检测代码来处理。
自己搞个异常可以搞一些"有意思"的事。。
回复 使用道具 举报
2楼3楼已经解释了为神马你的代码会编译失败,那么我来解释下为神马我们编程时要自定义异常,比如我们描述人的对象,人有性别和年龄,
class Person
{
     private  String  sex;   int  age;
    person()
     {
            this.sex=sex;this.age = age;
       }
}
调用者调用时传个,性别“公”,年龄“-24”,这样编译时虚拟机时可以通过的,但是实际上传的数值没有意义,所以这是我们就自定义一个异常抛出去,告诉调用者他传的数值有问题!明白了么?
回复 使用道具 举报

class  ExceptionDemo9
         {
         public static void func() throws Exception
        {
                 try
                 {
                         throw new Exception();
                 }
                 finally
                {
                         System.out.println("b");
                 }
         }
         public static void main(String[] args)
        {
                 try
                 {
                         func();
                         System.out.println("a");
                 }
                 catch (Exception e)
                 {
                         System.out.println("c");
                 }
                 System.out.println("d");
         }
}
不是runtimeexception 必须catch或throws 异常
回复 使用道具 举报
呵呵都解释的很全。。飘过
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马