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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 壁虎 中级黑马   /  2013-3-23 16:25  /  3186 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 tuo1254 于 2013-3-24 08:08 编辑

对异常,我一直不是特别理解,写程序时,我catch里面,不是打印此异常的信息,就是向外抛一个异常的对象。
最后的目的都是获取程序运行时发生异常的信息。然后根据提供给我的信息,去修正代码。我对异常的理解就是:
发现错误的理想时期是在编译阶段,也就是你在试图运行程序之前,然而编译期间并不能找出所有的错误,所以我们就需要用异常机制将错误源的适当信息传递给某个接收者
请问java的异常机制就只有这么一个作用吗?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-24 07:27

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

2 个回复

倒序浏览
   这是我整理的笔记,希望有帮助!

异常就是程序中存在的问题

        在java中程序出问题有两种情况下

        Exception------->解决  
       
        Error----------->不能解决  

        Throwable 这是Exception与Error的父类

        Throwable
                |-----Exception
                |-----Error

        命名规范
                所有异常都是使用Exception做为后缀
                所有的错误都是使用Error做为后缀.

        为什么使用异常

                对一些情况我们可以使用if条件语句进行判断解决
                存在的隐患,为什么还要使用异常?

                1.我们使用异常,可以将我们程序中的逻辑代码与异常问题分离。
                  而使用if判断操作,是将逻辑代码与判断操作混到一起,
                  它会使用程序不清晰。
               
                2.当我们完成某个操作时,这个操作是否执行成功了,我们需要根据执行成功与否
                  进行其它操作,但是这个方法它不能进行返回操作,那么这个时候就可以使用
                  异常进行处理。
       
        Exception的处理方式  1.捕获  2.抛出
       
        捕获
               
                格式
                        try{
                                可能出现异常的代码块
                        }catch(异常类型 变量){
                                对异常进行处理.
                        }finally{
                                完成关闭动作(关闭资源)
                        }

                 如果出现异常,那么异常后面的代码不会被执行。

        关于异常中常用的方法.
                getMessage()
                获取异常信息,返回字符串。
                toString()
                获取异常类名和异常信息,返回字符串。
                printStackTrace()
                获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
       
        异常处理 抛出

                throws 异常类型1,异常类型2,...
                写在方法上.

                抛出是抛给了调用者,如果调用者也没有处理,继续抛出,那么最终就会
                抛出给jvm。

        什么时候使用捕获,什么时候使用抛出?
                 如果当前问题在方法内可以自己解决,那么我们就进行捕获。
                 如果解决不了,那么抛出给调用 者,让调用者解决。
       
        异常分类
               
                异常分为两种

                        1.编译异常
                                当我们对java文件进行编译时,就要求我们对产生的异常进行处理,
                                这种异常就是编译异常。

                                Exception类以及除了RuntimeException体系中的其它类都是编译异常。

                        2.运行异常
                                我们可以不用对其进行处理,如果出现问题,jvm会处理.

                                RuntimeException以及其子类都是运行异常



                        无论是编译异常还是运行异常,我们都可以人为的对其进行处理。
       
        自定义异常
               
                简单说就是自己做一个类去继承异常类。这就是自定义异常。

                为什么要使用自定义异常?

                        在实际操作中,有些问题,不能使用jdk中提供的异常进行描述,
                        这个时候我们就可以自已定义异常来对其进行描述。

                我们在使用自定义异常时会使用一个关键字  throw

                throw作用是抛出异常对象。

点评

最好只写要点,或者用不同颜色的字体把要点标识出来,让别人看得清晰一点,谢谢  发表于 2013-3-23 17:47

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
我的理解是
实际的开发中,异常不是说每次运行的时候都会出现,在程序员编写代码的时候,很可能有些问题考虑的不是很周到,后者说,感觉某种异常的情况出现的概率不是很大,所以为了程序的简洁,一些小概率的事件不去做处理,或者是疏忽了一些事件,而之一段代码可能在这个小概率的事件下发生异常,所以我们用catch的方法将异常捕捉下来,然后自定义这个异常出现的动作,比如将异常出现的位置,时间,等写到一个异常日志里,以便于程序员查看这些异常日志,如果发现这个异常出现概率比较高  那么就去考虑程序的优化,更新代码来处理这个事件,我感觉 我们平时用的一些软件不断升级来修补BUG 就是在对程序不断优化 ,
当然 这个异常机制还可以用到很多别的方面,比如这个异常出现了,是重新启动程序,还是直接关闭,还是弹出对话框提示用户 等等 。。

评分

参与人数 1技术分 +2 收起 理由
黄玉昆 + 2

查看全部评分

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