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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

“可能抛出系统异常的方法是不用声明异常的”??
请问这句话对不对?应该怎么理解?可不可以请大神举个实例来验证一下~
个人猜想,此句话的侧重点是在“系统异常”这四个字上面,就是说如果是系统异常的话是不需要声明的,像RuntimeException之类的系统异常,是不用声明异常的。
但是只是个人猜想而已,网上搜了搜,没有搜到什么明确的解答,所以概念还是不是很清晰,求大神解答~:hug:

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

7 个回复

正序浏览
本帖最后由 田富丰 于 2014-4-16 22:29 编辑

Java 语言中所有错误或异常都是通过Throwable进行描述,而异常又分为两种,一种是可处理的也就是Exception,一种是不可处理的也就是Error.
Error:是一种无法处理的错误,比如运行一个系统中没有的一个class文件,这是无法处理的
而Exception又分成两种:一种是运行时异常(RuntimeException),一种是编译时运行(Exception)。(在写代码时发尽量发生在编译时)
RuntimeException:是需要调用者处理的,而这个异常程序员是无法处理的
Exception:是调用者无法处理的,因此需要程序员进行抛出或者进行try catch处理
以上是个人理解,如有大神不同看法,请指出!
回复 使用道具 举报
SyouRai_Tsk 发表于 2014-4-16 20:55
RuntimeException这个异常的使用是你功能不想在编译时被检测,只想别人用到这功能,然后出错了就要抛异常 ...

多看看毕老师视频.这些是基础
回复 使用道具 举报
yogaa 发表于 2014-4-16 20:13
也就是说RuntimeException和系统异常Error是没有必要用try catch  抛出异常的,抛出了也处理不了,而像数 ...

RuntimeException这个异常的使用是你功能不想在编译时被检测,只想别人用到这功能,然后出错了就要抛异常,这时候就是用RuntimeException
而Error异常是不能被抓取的.是系统底层挂了

点评

一针见血~谢谢版主哇~  发表于 2014-4-16 22:03
回复 使用道具 举报
我认为不对,系统异常有在运行时可处理的和不可处理的,java定义的系统异常很大一部分前者,也就是说可以 try catch 或 Throws,也应该这样做,所以你要声明,不然人家怎么处理?
回复 使用道具 举报
SyouRai_Tsk 发表于 2014-4-16 19:47
1.RuntimeException,也就是运行时异常,表示你的代码本身存在BUG,比如你提到的ArrayIndexOutOfBoundsExce ...

也就是说RuntimeException和系统异常Error是没有必要用try catch  抛出异常的,抛出了也处理不了,而像数组下标越界异常ArrayIndexOutOfBoundsException是可以抛出异常用try catch做处理的,是不是这个意思啊?
回复 使用道具 举报
1.RuntimeException,也就是运行时异常,表示你的代码本身存在BUG,比如你提到的ArrayIndexOutOfBoundsException,数组下标越界,这个属于代码有问题,数组定义的长度不够实际使用,不处理肯定会报错,如果你操作某个模块发现能正常运行,那只是因为代码还没跑到这个错误的地方而已。。控制台一旦报RuntimeException,就必须要处理。。没有例外的。而且,处理RuntimeException,不是try-catch能解决的。。try-catch在这里使用毫无意义。
2.不是RuntimeException,就是编译时异常,异常只有这两种了。比如你在处理文件流时的I/O问题,就属于编译时异常。这个时候用thr{}catch 来捕获或者 throws即可。
然后你说的系统异常是Error了,这类异常不能捕获,因为是Java调用了系统底部功能出现了问题,系统就是返给Jvm了Error异常,这时就必须修改代码了,例如内存溢出

评分

参与人数 1技术分 +2 收起 理由
黑妞~ + 2

查看全部评分

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