try-catch

try-catch

学了这段时间,对catch块的理解不清。

课程里说,try块里有异常时,try抛出此异常,catch块后面括号里的Exception对象的引用e捕获该异常,这怎么理解啊。

为什么在catch块后面写Exception e?

Exception e怎么捕获异常,用抓蝴蝶的网子套吗?用钳子夹吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿莹 2019-06-16 18:41:18

这里并不像new了一个异常对象哦。


try 里,小明拉肚子了,就把这个异常抛出来了,catch 就相当于医生。假如这个(全科医生  e )中写的是,则这个意思啥病都能处理(也就是说,啥病都会先过这个医生的手)

try{
小明拉肚子了,抛出这个问题了
}catch(全科医生  病){
病.详细信息。(e.getMassage())
执行这里的方案
}
try{
小明拉肚子了,抛出这个问题了
}catch(咽喉科大夫  病){
根本不会执行到这里,因为拉肚子不会进入咽喉科
}


try{
小明拉肚子了,抛出这个问题了
}catch(肠胃科大夫  病){
病.详细信息。(e.getMassage())
会进入这里,并执行这里边的方案(代码)
}

这里没有办法完全的进行类比,比喻不一定非常正确,但意思类似。如果同学还是理解不了,这里请同学先记住哦。


如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • 提问者 鱼儿0001 #1
    谢谢老师的耐心回复。你的意思是:catch后括号里跟的不是new出来的异常对象,如:catch(Exception e),我以为是new了一个Exception的对象e,老师我的理解错了吗?
    2019-06-17 14:56:56
  • 好帮手慕阿莹 回复 提问者 鱼儿0001 #2
    是的,不是new出来的Exception的对象e。祝学习愉快。它是上边try抛出了的异常。祝学习愉快。
    2019-06-17 19:24:52
好帮手慕阿莹 2019-06-16 15:28:36

1、同学可以这样理解。

try{

假如try中的代码抛出了异常,则会找catch

}catch(){

}

至于是否在catch中处理,要看catch后边的括号写的什么了。

比如,catch后边的括号中写的Exception e ,则它就可以捕获到所有的异常。也就是说,假如try中出现了异常,catch就可以捕获到。

如果写的ArithmeticException e ,则如果try中的代码抛出了算数异常,则catch就会捕获到。其他的异常catch就捕获不到。

至于它是如何捕捉到的,这个就是底层代码实现的咯,这个以目前的阶段还是无法给同学解释的。这里同学要学习的是如何使用它就可以了呦。

同学你可以暂时理解为,catch就像一个处理try发生的问题的人员,他有它指定的任务,括号里Exception 或者ArithmeticException 等就是他要处理的异常的类型。一旦try抛出了对应的异常,这个括号中的 e  就是抛出了的异常对象。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • 提问者 鱼儿0001 #1
    谢谢老师的耐心回复。其实,catch后面的括号里,像是new了一个异常对象e,我不理解解决try块里的异常就行了,干嘛在括号里自己还要实例异常对象e。就好像小明吃撑了消化不良,实例对象就是:拉肚子。妈妈很担心,于是妈妈也使劲吃将自己吃撑了,实例对象还是:拉肚子e。这样,妈妈就能帮小明了,给儿子开健胃消食片。很神奇很奇怪
    2019-06-16 15:49:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师