java中throws子句是怎么用的?工作原理是什么?

7.throws子句  

当你的方法里抛出了checked异常,如你不catch,代表你当时不处理(不想处理或没条件处理),但你必须得通过"throws那个异常"告诉系统说,这儿有个问题,我现在不处理,将来一定别人要处理,否则执行到它,马克-to-win:系统会"不优雅"的崩溃。举个例子,工兵张三发现了地雷,假如他处理,完事就完事儿了。但是他发现了地雷,自己却没带齐工具,没法处理,他必须做个标记,说这儿有一个地雷,别的工兵将来一定要处理,否则将来有人踩上去会爆炸。马克-to-win:注意:throws只是标记,并没处理,执行到那,系统还是会崩溃!

语法总结就是:当你的方法里抛出了checked异常,如你不catch,必须throws,即告诉编译器,我的调用者会处理。如果你已经是main,则main的调用者jvm会替你收拾残局。否则无法编译通过。

有的同学可能会问:throws有什么意义?又不真正处理问题。throws的意义,在于和throw配合起来一起工作。有关throw的意义,请参照上面throw部分。

现在就出现了一个非常深入的问题。(新手可忽略)为什么sun公司的语法设计成:runtime异常不需要throws,而非runtime异常需要呢?咱们先说非runtime异常为什么需要throws呢?因为程序员多一道工序宣称一下,麻烦一下自己,会给sun公司的人(Java编译器)提供很大便利,少了很多判断等工作。说穿了就是麻烦我们自己方便他人。而为什么runtime异常不需要throws呢?因为运行时的情况非常复杂,程序员实在无法预料到所有的情况到底除零还是格式不对,所以即使想帮也帮不上忙。sun公司的人没有办法,只能自己去判断,即使再不愿意,也得干。于是也就不用你throws了。下面一段话摘自国外程序员和sun公司的对话:有关抱怨sun公司强迫他们写throws的,认为是个burden。挺有意思,大家可以看看。事儿(需要throws)都是programmer干的,出了问题,责任也是你的。
 

例:1.7.1(本例编译有错误)-

import java.io.FileNotFoundException;
public class Test {
    void m1_mark_to_win()  {
        throw new FileNotFoundException();
    }
}

更多请看:http://www.mark-to-win.com/tutorial/java_5_throws.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值