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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不抛弃不放弃 中级黑马   /  2013-11-12 21:46  /  1153 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不抛弃不放弃 于 2013-11-13 01:13 编辑

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

4 个回复

倒序浏览
java异常分两大类,Exception和Error ,
Error由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不进行处理。
Exception除RuntimeException之外都要处理,要么使用try捕获声明,要么抛出。
程序运行过程中可以使用throw关键字抛出一个Throwable的子类对象,通知调用者,
程序中可以在方法后面使用throws关键字声明向外抛出异常,
finally是异常处理完成后一定会执行的语句块
try块中放的本身就是可能会有异常的语句,如果没有异常不会处理,有异常会将异常交给catch处理

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
java处理异常有两种情况:
第一种用try{}catch{}语句捕获异常并进行处理;
第二种用throws关键字在可能出现异常的地方进行申明,提醒调用可能出现异常的方法的的操作处理这些异常。
throws关键字是在可能出现异常的地方进行声明向外抛出异常。
throw是抛出Throwable的子类对象。
try{}catch{}是组合使用的,try块中是可能产生异常的代码,没有异常就会执行try块中的内容,有异常就交给catch块处理。
一般在try{}catch{}语句后还会有finally也就是:
try{}
catch{}
finally{}
这样的格式,finally块中的内容无论有没有异常都会执行。
而且可以在try块和catch块中嵌套try{}catch{};

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
Throw定义在函数内,用于抛出异常类的对象。
Throws定义在函数上,用于抛出异常类,可以抛出多个,用逗号隔开。
当函数内有throw抛出异常对象,并未进行try处理。必须要在函数上声明,否则会编译失败。
try {需要被检测的代码}catch(){处理异常的代码}finally{一定执行的代码}
finally中定义的通常是 关闭资源代码。因为资源必须释放
try中不能抛出异常,只能处理异常,try块和catch块中嵌套try{}catch{};
回复 使用道具 举报
一、 异常的概念和Java异常体系结构

所谓异常,就是程序运行过程中出现的错误。

Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。这些异常类分为两大类,错误Error和异常Exception。其中异常类Exception又分为 运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。

1、Error与Exception    Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。     Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。   

2、运行时异常和非运行时异常

    运行时异常都是RuntimeException类及其子类异常,如NullPointerException、 IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引 起的,程序应该从逻辑角度尽可能避免这类异常的发生。

    非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不 处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异 常。


关系图:
                                                           
                                                             Throwable

                      Error                                                                          Exception

                                                                           RuntimeException                   非运行时异常
                                                                     




二、 异常的捕获和处理

Java异常的捕获和处理是一个不容易把握的事情,如果处理不当,不但会让程序代码的可读性大大降低,而且导致系统性能低下,甚至引发一些难以发现的错误。

Java异常处理涉及到五个关键字,分别是:try、catch、finally、throw、throws。

1、 异常处理的基本语法     在java中,异常处理的完整语法是:  

try{       //(尝试运行的)程序代码     

}
catch(异常类型 异常的变量名)
{       //异常处理代码   

}
finally
{       //异常发生,方法返回之前,总是要执行的代码  

}

catch语句块会捕获try代码块中发生的异常并在其代码块中做异常处理,catch语句带一个Throwable类型的参数,表示可捕获异常类型。当 try中出现异常时,catch会捕获到发生的异常,并和自己的异常类型匹配,若匹配,则执行catch块中代码,并将catch块参数指向所抛的异常对 象。

catch语句可以有多个,用来匹配多个中的一个异常,一旦匹配上后,就不再尝试匹配别的catch块了。通过异常对象可以获取异常发生时完整的 JVM堆栈信息,以及异常信息和异常发生的原因等。

匹配catch语句的顺序是由上到下。最大的异常类(Exception)必须放在最后一个catch块。
catch不能单独使用,必须配合try一起使用。
永远只有一个catch会被执行。

finally语句块是紧跟catch语句后的语句块,这个语句块总是会在方法返回前执行,而不管是否try语句块是否发生异常。并且这个语句块总是在方 法返回前执行。目的是给程序一个补救的机会。

finally也不能单独使用。
finally语句最多一个。

try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。

throw、throws关键字
throw:抛出异常:手动抛出异常  动词
用法:  throw new 异常类();
2. throws:申明异常(申诉):告诉调用这个方法的人这个方法
可能有异常产生。-----名词
throws用在方法后面。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 蹭饭蹭网。。。

查看全部评分

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