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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 山西_李帅 中级黑马   /  2013-4-11 20:37  /  1482 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 山西_李帅 于 2013-4-12 13:29 编辑

异常里面的五个关键字throw   throws   try    catch     finally会用,语法也可以,但是不清楚异常一般是用在什么时候什么地方。谁能给分析下

11 个回复

倒序浏览
山西_李帅 来自手机 中级黑马 2013-4-11 20:38:50
沙发
也知道异常可以用来处理没有返回值
回复 使用道具 举报
某一段程序可能会存在着一个潜藏的问题,例如除0异常。而这个异常一旦出现,可能会导致整个程序运行失败。所以需要在可能出现异常的地方,人为的对其操作。以保证程序的健壮性。
回复 使用道具 举报
同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。throw语句用来明确地抛出一个"异常"。throws用来标明一个成员函数可能抛出的各种"异常"。Finally为确保一段代码不管发生什么"异常"都被执行一段代码。可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。

评分

参与人数 1黑马币 +6 收起 理由
张熙韬 + 6

查看全部评分

回复 使用道具 举报
本帖最后由 将臣 于 2013-4-11 21:25 编辑

绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。
之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意。
异常是程序处理意外情况的机制,当程序发生意外时,我们需要尽可能多的得到意外的信息,包括发生的位置,描述,原因等等。这些都是我们解决问题的线索。
异常的使用可是说不是为了使用异常而使用异常。异常是程序设计的一部分,对于问题提前发现,预警处理!
使用还是要根据业务来判断!
用编程软件的话都是自动生成的,做几个小程序差不多就能明白了,也可以暂时先硬性记下来!
     try {
                        //这里是方法
                        }
                } catch (SQLException e) {
                  //这里面是如果你出错了,错误信息会在这里打印出来
                        e.printStackTrace();
                } finally {
                //这个就是从字面上理解就是最后,也就是最后执行的 不论是否出错 都会执行的 jdbc的话这里选择关闭数据库连接
                }

throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开.throw关键字通常用在方法体中,并且抛出一个异常对象。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
http://longlongchang.blog.51cto.com/4725201/1171009  这篇文章说的挺清楚的,个人觉得用编译工具时,它会自动加上,如果没用编译工具的话,就需要经验了。。。
回复 使用道具 举报
补充一下异常这个东西,分两种,一种是Error编译通过不了的,那种不用管;而另一种Exception就是我们需要掌握的,编译能通过但是运行时出现错误,Exception异常能通过throw   throws   try    catch     finally处理,而使程序正常运行。具体用在什么地方,我感觉这个靠直觉或者积累,比如做除法算术的时候除数为0会有异常,什么数组越界,sql啊。。。多做练习吧,建议:遇到没见过的异常多查查api,做几次笔记就好了

评分

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

查看全部评分

回复 使用道具 举报
先说一下异常的体系:
对于问题的划分:两种,一种是严重的问题,一种是非严重的问题
对于严重的,java通过Error类进行描述
  对于Error一般不编写针对性的代码对其进行处理
对于非严重的,java通过Exception类进行描述。
  对于Exception可以通过使用针对性的处理方式进行处理。
对于异常要么抛,要么就try {} catch(){}。
对于你说的throw   throws   try    catch     finally一般用在什么时候,什么地方的问题,
throws一般用在对方法的声明,使用在函数上。知道该方法可能存在问题,例如除数可能为0,或者是你认为符合事实的情况,例如人的年龄不可能无限大等情况,你都可以自定义异常,然后再该方法处声明。

对于throw使用在函数内部,后边跟的是异常对象。例如我在一个方法发现问题了,决定抛出一个异常。
int div(int a,int b)throws FuShuException
{
        if(b<0)
                throw new FuShuException("出现了除数是负数的情况",b);
        return a/b;
}
但是当如果当一个方法没有声明异常时,如果方法内部出现异常,这时只能try catch处理。
一个try可以对应多个catch
对于finally{}这里面存放的代码一般是必须要执行的,需要说明的是try  finally并没有处理异常。因为没有catch就不算处理。

评分

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

查看全部评分

回复 使用道具 举报
Sword 金牌黑马 2013-4-12 01:19:24
9#
很多地方都会用到,比如说代码中可能会出现分母为0,什么数组越界,这样代码编译没问题但是运行会出错误,所以要处理异常
还有IO流中,对文件,字符或者字节的读写也要用try catch进行异常的处理
对数据库的操作,使用sql语句的时候也要处理
try catch的作用是在这个代码块解决异常打印错误信息,throws是将异常抛出交给用户处理
具体怎么用或者什么时候用,要考自己平时的练习积累经验吧,很多时候靠的是自己的经验

评分

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

查看全部评分

回复 使用道具 举报
异常其实就是java对不正常情况进行描述后的对象体现。对于try 、catch 、finaly、throw、throws的使用,
对于异常可以通过try{}catch(){}来处理,也可以在方法上通过throws抛出异常;finaly是一定会执行的代码,通常用来关闭资源;
throw使用在catch语句中,用于抛出异常对象。
try
{
        运行语句
}
catch(Exception e)
{
        throw new Exception();
}
通常在描述事物时,出现的不正常情况使用,这就需要经验了
回复 使用道具 举报
throws捕获并向外抛出异常
throw抛出异常
try catch是内部捕获异常并做自定义处理
finally是无论是否有异常都会被处理的语句,除非在finally前存在被执行的System.exit(int i)时除外
一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。用try来指定一块预防所有“异常”的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的“异常”的类型。throw语句用来明确地抛出一个“异常”。throws用来标明一个成员函数可能抛出的各种“异常”。Finally为确保一段代码不管发生什么“异常”都被执行一段代码。可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,“异常”的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种“异常”进行处理,堆栈就会展开,直到遇到有处理这种“异常”的try语句。
回复 使用道具 举报
山西_李帅 来自手机 中级黑马 2013-4-12 13:29:01
12#
谢谢大家了,明白了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马