看了文章,还是不明白!!!checked exceptions是可恢复的?难道runtime exceptions/errors就不可恢复吗?在我看来,每个exception都是program的error导致的,这些errors都是因为你的编程错误引起的,为什么要分成这三类呢?期待答案或者继续细读文章!!
解决方案 »
- 求一个java正则表达式
- 问个简单问题...
- 用tomcat登陆系统时被否认的问题,能解决决对是高手!!!
- 请问大虾们:在applet中怎样把一张图片设定为背景图片?
- jdk环境变量配置新的问题,绝对不是原来帖子的重复!
- 那边有Java socket和C socket通讯的资料?我在传输数据的时候,数据不对。
- 微博上看到的一个问题
- 急,一个聊天室程序,为什么两者不能建立连接?
- Edipse中建立/使用package
- SOS!!!环境:Tomcat4+Oracle8i;链接数据库失败,请各位大虾帮忙指正
- 请问读xml配置文件一般用什么方法?
- 郁闷中的JTable刷新问题呀!JTable中的数据库数据怎么根据按纽响应来重画最新数据啊?
你随便把一个C文件用java编译当然也...呵呵check exception首先得是一个exception
如果你认为别你调用你的类的一个方法有可能导致出错,那你就应该为此方法配上一下exception
比如你读取一个文件就可能有IOExeption,但你不能因为这个exception而导致整个系统不可运行,所以应该为这个read方法配上一个IOExeption这篇文章只是简单地说了一下exception的基本用法,当然其中的比喻可能有不当之处http://www.csdn.net/develop/article/26/26772.shtm
最近写的关于模式的一文,欢迎各位兄弟指点
如果想灵活运用exception的话,建议多看一下jdk源代码中的exception是怎么用的
其实在java中,exception和event等很多原理都很简单,多实践便能得其精髓
不能。runtime exception是假设不会错,所以写程序的时候不强迫你进行处理。checked exception是假设会出错,所以要你在写程序的时候就写好处理逻辑。“我的问题就是:是不是应该把check exception看成是:比如我方队竟派了6名队员上场(硬伤),所以编译不通过.而观众喝倒彩和打手都应该是runtime exception的一种呢?”
根据我上面的解释,这样打比方是不恰当的。6名队员上场就不是exception了,是语法错误。
TIJ里的意思是exceptions都是不能恢复的,只能对其处理,不能在处理完后再回到抛出点.
似乎编译器更看中check exception而非runtime exception.光声明不处理的话,真不知道虚拟机是怎么对其处理的(如果这归虚拟机管的话)Hodex(小何才露尖尖角) :
打手和被喝倒彩似乎都是运行时的exception,应该归并到runtime exception里吧?check或非check是不是都是针对编译器是否去check而言的呢
我觉的说的很好,如果大家都不意见,我就按着Sheepy说的去理解啦!!
“编译不通过不一定是由于check exception的问题
你随便把一个C文件用java编译当然也...呵呵”
我想这不是一个exception,因为你这个C文件和你原来的program根本就拉不上关系,就好象我和NBA,因为我不是场上的一员,不是一类的,就算我所做的是对或错,都对这常比赛无关;但是说到球场的观众闹事,为什么它就是一个exception呢?因为观众和比赛已经联系在一起了,就像一个类要继承另一个类的属性,方法,如果运用不正确,都会导致整个program的不能正常执行,“球员”和“观众”可以看成两个类吧!(我都说了些什么?不好意思,菜鸟也:P)TO:Sheepy(-[J.2.E.E]-)
Hodex说Exception分三类:checked exception/runtime exception/errors,你说“6名队员上场就不是exception了,是语法错误。”语法错误是一个error吧,那它到底是不是一个exception??Hodex说电子记分突然把74写成47,这是一个error,是一个exception,你们说的error应该属于同一类吧!!!
如果74变47是因为电压波动或者其他什么原因造成内存中数据损坏,那么属于error。你明知道只能5个人却派了6个人上场,明显属于语法错误。
1 The name RuntimeException is somewhat confusing. Of course, all of the errors we are discussing occur at run time.
2 The rule “If it is a RuntimeException, it was your fault” works pretty well. You could have avoided that ArrayIndexOutOfBoundsException by testing the array index against the array bounds.
3 These runtime errors are completely under your control.
4 In summary, a method must declare all the checked exceptions that it might throw. Unchecked exceptions are either beyond your control (Error) or result from conditions that you should not have allowed in the first place (RuntimeException).
---form <<core java>>
我举C语言的例子是为了说明上6个人不是exception,而是语法错误,不能执行
大家都没有正面回答这个问题我现在对sheepy说的"runtime exception是假设不会错"表示疑问
在一切java程序中,runtime exception都是被缺省声明的(见TIJ 2e 喉结 396页),这么说来的话,java还是不放心你对runtime exception的操作啊我还是回到我一开始的地方:check exception是程序的硬伤,java在尽量让你避免它,而runtime exception则轻许多
• A bad cast;
• An out-of-bounds array access;
• A null pointer access.
Exceptions that do not inherit from RuntimeException include:(就是checked exceptions啦)
• Trying to read past the end of a file;
• Trying to open a malformed URL;
• Trying to find a Class object for a string that does not denote an existing class.
这句话是啥意思啊
我想太多人对这个exception晕头转向了
大家再多看两眼反正现在我知道了,写程序的时候注意check exception就好了,先让它通过编译,
然后自己再慢慢找它里面的runtime exception
就好像程序中main方法忘了加String[] args做参数,或是忘了某个括号的匹配等你一看,哦,昨天没睡好,记成是橄榄球比赛了,马上换一批队员上(这老板手下的俱乐部还不少)。于是科比、马龙、詹姆斯等等上场了(这好像不是湖人,应该是nba老中青三代联谊,^_^),裁判一看,马上就紧张了。先问科比的案件结掉没有?你就给他一份声明,说科比刚参加过了听证会,有参赛的资格;同时出示詹姆斯选秀时因不足22岁而发表的志愿声明,证明小“国王”的参赛资格。但是裁判还是不放心,说马龙的肥肘伤害性太大,对火箭的季后赛就多次弄得姚明、纳克巴等人仰马翻,差点惹现场观众暴乱,你赶紧递给裁判一个眼神,示意晚上有活动安排(黑哨?),并让马龙当场写下不使用肥肘伤害对方队员的保证。ok,几经周折,裁判终于放行(所有的check exceotin都被catch或是做了更高一级的throws声明),比赛开始了……现在是科比拿球,他在外围不停运球,寻找对方防守的漏洞。机会果然来了,在三秒区附件游弋不定的邮差趁防守队员注视科比的时候,悄然潜入篮下,科比的球应声而到,好个妙传!马龙一阵兴奋,跳起来正准备往篮里扣,却发现有个防守队员已经贴近了。老马龙玩心一起,突然想玩个声东击西的把戏,把球传给了另一侧的詹姆斯,同时,裁判的哨也响了。原来老邮差毕竟不是飞人,滞空能力还差了点,再加上年老体衰,等球离手的时候,双脚早已触地,“起跳违例”!一个runtime exception就这样发生了。观众席上阵阵嘘声,教练更是气得吹胡子瞪眼。^_^比赛继续……这次科比再不信任马龙,老老实实按教练的战术安排,将球交到奥尼尔手里。大鲨鱼果然名不虚传,轻松挤开防守他的队员,一记重扣!“咔嚓”,球进了,可怜的篮框也被300多磅重的鲨鱼生生给砸坏。由于出现了严重的error,比赛不得不暂时中止欲知后事如何,且听下回分解:)
果然高!!但有两点俺认为...
1 是checked exception,你还是错了,呵呵
2 感觉你的checked exception不像checked exception -_-
所有的Throwable其实都是运行时才发生的 The name RuntimeException is somewhat confusing. Of course, all of the errors we are discussing occur at run time.另外,“起跳违例”俺认为应该是个checked exception,只是派马龙上才导致runtime exception你的Error果然强!!俺是真球迷,最爱Roma,但前两天被Milan给菜了,不服!!!
但是仔细想想,check exception如果没有catch或是作更高一级的throws声明的话
编译都不能通过,也就说,比赛就无法开始啊我认为,check exception就是那种编译器认为你的某些操作很可能会导致某些异常,所以强行要求你对此作出检查(check)和处理,否则,不会让你编译通过的。就像裁判自身也许并不认为马龙手上很不干净,但为了不引起球迷起哄等导致比赛不能进行下去的异常,他得让马龙作出一个不用肥肘作出伤害性动作的声明,并承诺出事了自己要付什么责任等等(^_^,这当然不是事实,我只是拿老邮差来开个玩笑而已,也当是为火箭出气)。所以,编译器就好比一个尽职的裁判,他预判到可能会有干扰比赛正常进行的因素(check exception),并要求球员(程序?)对此作出一些必要的check,否则,就不让比赛进行说到这里,突然想到其实犯规和违例也都算是check exception。因为这些nba事先规定好的,并专门派了三个裁判来作检查的工作。球员上场前虽然不用背诵规则,但有一点,他们都是默认这些规则的,否则就没有上场的资格(编译不通过?)。在比赛中,如果发生了犯规,那就是一个check exception产生了,裁判按预先制订的规则,记球员的犯规次数[、罚球]、对方获得控球权(catch块里的处理过程),然后让比赛继续进行(或是让该犯规的球员六犯下场)。呵呵,本来只是想说明check exception是一些可以预见、但必须给出处理声明的异常。如果处理得当的话,比赛还可以继续进行。用马龙的违例作为runtime exception的例子确实很不妥(其实我是想让老邮差用力过猛,导致上臂脱臼而不得不退出比赛的,后来觉得太过分了,所以换个温柔点的,没想到反而出错了,^_^)胡言乱语,只为博众君一笑to:Hodex(小何才露尖尖角)
罗马这个赛季的确很不错了,进攻有力,防守稳健,场面也好看
如果不是米兰更出色的话,冠军奖杯理所当然应该是totti来举的,^_^其实罗马不能夺冠的原因是与米兰的四场比赛全输掉了
不能不说是遗憾,就好像米兰本来应该进冠军杯决赛一样
如:他不能说你派艾弗森防奥胖就是错误
他也不能说你派一个伤员上场就是犯规(但大家都知道这些行不通,是你(程序员)的错误)
还是怀念2001年的Roma
AC Milan这赛季太Strong了,79分!!还有两轮!!!其实Roma比2001年不逊色,不过Milan丢掉冠军杯(0:4)也实在...呵呵,其实俺也是Milan Fan
checked exception,not check exception,you failed again!! hehe~~
红黑米兰总是能让很多人喜欢!对checked exception的失误再次脸红 :(
checked exception 是假设你会出错,所以强制你去声明或catch它
runtime exception 是假设你不会出错,那奥胖扣坏篮板应该算runtime exception吧
不应该理解checked exception强制你去声明或catch它
而应该理解runtime exception是不应该去catch,因为它代表程序设计不合理奥胖扣坏篮板应该是个Error关于Exceptions还是得从实践中体会其用法,光是空谈是很难说明问题的
void checkAction(IStatus s) throws 犯规Exception,违例Exception;
}public interface IPlayer {
IStatus doAction();
}
然后使用observer模式配置,使umpire可以盯着player,毕竟,在篮球比赛里吹哨的是裁判,裁判抛出的都该是checked exception,而player抛的则是runtime exception或是error比如奥胖砸了篮板,比如player与umpire理论,比如player自己摔倒等
大鲨鱼果然名不虚传,轻松挤开防守他的队员,一记重扣!“咔嚓”,球进了,可怜的篮框也被300多磅重的鲨鱼生生给砸坏。由于出现了严重的error,比赛不得不暂时中止-----------------------------------------佩服的五体投地
"Kobe带球上篮脚下一滑摔了一跤,原本十拿九稳的进球没了" 我认为这不能算一个exception,因为其不会导致比赛的中断。
说来说去好像我们真是在讨论篮球的规则了,呵呵
可怜cyouyou(甘蓝) ,你平均每个赛季得两次五体投地了,(不过近两个赛季还好)呵呵
后来想了一下,的确不算exception,改成kobe脚一滑,摔倒在地起不来了,被迫换人这才是runtime exception:)
而且篮球比赛有规定,必须死球才可换人,裁判判断暂停换人就是把runtime exception转换成checked exception,类似于
try {
} catch (RuntimeException e) [
throw translator(e);
}
交由统一异常处理器处理
希望下个赛季再接再厉
^_^
onefox(一品狐) 有何高见?
在下洗耳恭听