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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尹博 中级黑马   /  2012-4-11 18:02  /  1732 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我知道抛出多个异常可以对应catch多个异常,或者抛出多个异常,直接catch一个异常,或者抛出一个异常,对应catch多个异常,但是后两种处理方式应该是有条件的吧?那可以进行一对多和多对一异常处理的条件是什么呢?

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 程小龙 于 2012-4-11 18:34 编辑

catch语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。catch的类型是Java语言中定义的或者程序员自己定义的,表示代码抛出异常的类型,异常的变量名表示抛出异常的对象的引用,如果catch捕获并匹配上了该异常,那么就可以直接用这个异常变量名,此时该异常变量名指向所匹配的异常,并且在catch代码块中可以直接引用。这一点非常非常的特殊和重要!
多个catch块时候,Java虚拟机会匹配其中一个异常类或其子类,就执行这个catch块,而不会再执行别的catch块。
虽然我们catch(Exception e){}可以捕获所有异常,为什么要写多个catch块进行多级处理?
是为了便于对不同类型的异常做出不同类型的处理。
为了记录异常类型,做进一步的日志记录以及以后查询。
异常处理框架的设计,以便展示给用户更多的错误信息。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
1。处理方式有两种:try后者throws
        2。调用到抛出异常的功能时,抛出几个。就处理几个。
                一个try对应多个catch
        3。多个catch,父类的catch放在最下面。
        4。catch内,需要定义针对性的处理方式,不要简单的定义输出语句。
                也不要不写
                当捕获到的异常,本功能处理不了时,可以继续在catch中抛出

                try
                {
                        throw new AException();
                }
                catch (AException e)
                {
                        throw e;
                }

                如果改异常处理不了。但并不属于该功能出现的异常
                可以将异常转换后,在抛出和该功能项关的异常。

                或者异常可以处理。当需要将异常产生的和本功能相关的问题提供出去
                当调用者知道,并处理。也可以将捕获异常处理后,转换新的异常。
               
                        try
                        {
                                        throw new AException();
                        }
                        catch (AException e)
                        {
                                throw new BException();
                        }

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

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