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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

还有运行时异常  谁来讲讲啊

点评

再次提醒: 如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,否则将扣除技术分,谢谢  发表于 2013-3-18 12:12
如果问题未解决,请继续追问,如果问题已经解决了,请将其改为“已解决”,谢谢  发表于 2013-3-18 07:37

5 个回复

倒序浏览
throws Exception和try catch的区别
throws Exception是抛出异常,这个抛出的含义是什么?
是不捕获了,还是可以通过编译,不能运行,还是什么。
对抛出异常的含义不是太理解?
------解决方法--------------------------------------------------------
把 Exception 看成 一块 石头
throws Exception 就是把石头丢出去
try catch 就是拿个网兜在那里接石头
throws Exception是写在方法后面的吧?属于契约式编程,就是告诉编译器本方法可能会抛出该类型异常,由方法的调用者去处理。try catch就不用说了就是那么个意思。
------解决方法--------------------------------------------------------


在你编写的程序中,有些语句可以会发生异常,这时Java编译器要求你必须

进行捕获,才可以运行。

(1)如果你不想编写捕获异常的具体代码的话,你可以使用 throws Exception 的形式,

把异常再次抛出,交给JVM(Java虚拟机)可以捕获。这是一种比较省事的办法。

(2)如果你想亲编写处理异常的代码的话,可以使用try{ }catch(){ }的形式,进行捕获,

一旦程序发生异常,它就会安照你catch{ }块编写的代码去执行。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 赵晓东 于 2013-3-17 22:35 编辑

throws Exception 是将问题抛给调用该方法的上一层,如果还不能解决该问题,则接着往上一层抛,直到抛到JVM为止,而try...catch是将问题代码包含进去如果抛出异常,则catch将进行处理,简单点说就是throws是往上一层抛异常,把问题交给上一层处理,而try...catch是当捕获到异常时自己处理
至于运行时异常,运行时异常,编译时是不会检测的,运行时异常是当程序运行时逻辑错误或者结构错误抛出来的异常,这时候程序将会停止,而恰恰逻辑错误时最难发现,也是最难处理的,所以我们写代码的时候要尽量避免逻辑错误,在可能出错的位置及时try...catch 或者throw。

对了,楼主弱弱的问一下,你的100多万的积分是怎么来的?

评分

参与人数 1黑马币 +9 收起 理由
黄玉昆 + 9 早期注册的都是那么多积分

查看全部评分

回复 使用道具 举报
throws Exception 就是你知道这个程序运行可能会有异常  但是你不想处理 声明出去,告诉编译器谁调用你的程序,谁去处理.
try catch就是当出现异常时 你自己给出了处理方法.因为你没throws 所以异常要在这个方法里终结,你需要在catch中给出对应的处理方式.
回复 使用道具 举报
抛出异常
在程序运行过程中可以使用throw关键字抛出一个Throwable的子类对象,通知调用者处理异常
在程序中可以在方法后面使用throws关键字声明向外抛出异常
也可以使用try…catch进行异常的捕获
finally也可以结合try使用,只要执行了try中的代码,finally就一定会执行


Runtime Exception(运行时异常)
一类特殊的异常,如被0除、数组索引越界等。产生比较频繁,处理麻烦,如果每次都处理,会对程序可读性和运行效率影响比较大,因此由系统检测并将它们交给缺省的异常处理程序,用户不必对其进行处理。这类异常不处理,编译时不会报错,只是在运行时出现错误时才报告异常,所以我们称之为运行时异常,所有RuntimeException的子类都是运行时异常。我们也可以对运行时异常进行处理。
编译时异常
Exception中除了RuntimeException的子类,其他异常都是必须要处理的,如果不处理,编译时会报错,这些异常我们称之为编译时异常。

评分

参与人数 1黑马币 +9 收起 理由
黄玉昆 + 9

查看全部评分

回复 使用道具 举报
本帖最后由 聂斌 于 2013-3-18 02:21 编辑


try catch:

对于会觉得会有异常抛出的程序块,用try{}包住,然后用catch来抓住这个异常,在catch中对异常做处理, 在try中如果有异常的话,程序会转到catch而不会中断,通常这两个是配合使用的,如果你不想因为程序有错,而抛出一大堆异常的话,你就把该程序try起来,try和catch只能获取程序运行时引发的异常


throws:

在方法声明中,添加throws子句表示该方法将抛出异常。如果一个方法会有异常,但你并不想处理这个异常,就在方法名后面用throws,这样这个异常就会抛出,谁调用了这个方法谁就要处理这个异常,或者继续抛出.

对于异常有两种处理方法:

1、要么声明异常,也就是在方法名后面加上throws exceptionname,..., 方法本身只是抛出异常,由函数调用者来捕获异常。

2、要么捕获异常。通过try catch方法,catch子句中放置处理异常的语句。

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

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