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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马张伟 黑马帝   /  2011-12-29 15:19  /  3543 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
在try块中可以抛出异常吗?

4 个回复

正序浏览
异常可以随时抛,随意抛,函数内抛用throw 函数外抛用throws。
函数内抛后,函数外也要抛,但是Runtime异常更随意,函数内抛了,函数外不用抛。
异常处理结构try match, try finally, try match finally
程序一定要执行的部分放到finally块中,用来释放资源。
回复 使用道具 举报
付星 黑马帝 2011-12-29 16:49:24
板凳
在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。

Throwable 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类,但是Exception是可以处理的,Error是不能处理的,它是由外部环境或事故造成。

try、catch 和 finally
try 块:将一个或者多个语句放入 try 时,则表示这些语句可能抛出异常。编译器知道可能要发生异常,于是用一个特殊结构评估块内所有语句。
catch 块:当问题出现时,一种选择是定义代码块来处理问题,catch 块的目的便在于此。catch 块是 try 块所产生异常的接收者。基本原理是:一旦生成异常,则 try 块的执行中止,JVM 将查找相应的 JVM。
finally 块:还可以定义 finally 块,无论运行 try 块代码的结果如何,该块里面的代码一定运行。在常见的所有环境中,finally 块都将运行。无论 try 块是否运行完,无论是否产生异常,也无论是否在 catch 块中得到处理,finally 块都将执行。

try-catch-finally 规则:

1.必须在 try 之后添加 catch 或 finally 块。try 块后可同时接 catch 和 finally 块,但至少有一个块。
2.必须遵循块顺序:若代码同时使用 catch 和 finally 块,则必须将 catch 块放在 try 块之后。
3.catch 块与相应的异常类的类型相关。
4.一个 try 块可能有多个 catch 块。若如此,则执行第一个匹配块。
5.可嵌套 try-catch-finally 结构。
6.在 try-catch-finally 结构中,可重新抛出异常。
7.除了下列情况,总将执行 finally 做为结束:JVM 过早终止(调用 System.exit(int));在 finally 块中抛出一个未处理的异常;计算机断电、失火、或遭遇病毒攻击。

throws,throw
throw 用于手动抛出一个异常,一般抛出自定义异常
throws的一个例子
public static void main(String[] args) throws Exception {
                Class.forName("java.lang.String");//本来这里要用try-catch处理
                //这里使用throws,它是把异常抛出去,让调用本方法去处理,一般定于方法右边,如上main方法
        }
回复 使用道具 举报
Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在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语句.
回复 使用道具 举报
本帖最后由 房宝彬 于 2011-12-29 15:27 编辑

第一问:有两中方式:
1.捕获异常,自己处理.
2.throw出去,让别人处理.

第二问:
throws是获取异常
throw是抛出异常
try是将会发生异常的语句括起来,从而进行异常的处理,
catch是如果有异常就会执行他里面的语句,
而finally不论是否有异常都会进行执行的语句。
第三问:回答你,完全可以

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

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