各位大佬,帮帮我,throw必须手动抛出异常吗?像我上面的是
java吧
全部回复
仅看楼主
level 9
腿毛炸毛了
楼主
各位大佬,帮帮我,throw必须手动抛出异常吗?像我上面的是不是相当于即使有异常也没抛出呢?
2018年06月06日 13点06分
1
level 9
腿毛炸毛了
楼主
这是一个功能类,catch在主类里面
2018年06月06日 13点06分
2
level 14
暮色妖娆丶😘
你在问啥子......
2018年06月06日 13点06分
3
level 8
无效程式
平时写代码练习的话,偷懒用throws也是可以的。但是实际应用还是应该catch,因为要根据不同的异常,提示用户进行不同的操作。
2018年06月06日 13点06分
4
腿毛炸毛了
听不懂,我的catch在主方法里面,emmm,我想问的是用throws的话一定得自己抛出吗?比如if()throw new IOException。一定得这样吗?我还是小白,不要喷
2018年06月06日 14点06分
level 14
kpx✨
不是
方法里面的未捕获异常会自动抛出去
2018年06月06日 22点06分
5
腿毛炸毛了
嗯,那throw和throws有什么区别吗?就只有throw只能抛出一个异常,throws能抛出多个异常的区别吗?
2018年06月06日 23点06分
kpx✨
@腿毛炸毛了
throw在方法体中抛出一个异常 throws用来标记一个方法可能抛出的一个或多个异常(大概吧
2018年06月06日 23点06分
level 5
安于心ლ
也可以直接在方法后面抛,不过实际应用中用到try catch比较多
2018年06月07日 03点06分
7
腿毛炸毛了
老师不准我们在功能类里面用try-catch,她要求我们功能类用 throw,主类用 try
2018年06月07日 03点06分
level 7
棠梨煎雪🍀🌹
我居然在Java吧里见到师弟
2018年06月07日 06点06分
9
腿毛炸毛了
为啥子呢?这么巧的吗
2018年06月07日 08点06分
棠梨煎雪🍀🌹
@腿毛炸毛了
是呀
好巧
2018年06月07日 08点06分
level 5
小岚家的霞琳
异常处理一般来说有try...catch...环绕
throw和throws
1、try catch环绕一般来说是包裹一个可能出现运行时异常的代码块。捕获该异常,根据异常做对应的处理。
例如input流读取文件时,可能抛出FileNotExists异常即文件不存在异常,这可能是因为文件路径名不对或者文件不存在多种原因导致的,属于在编译期无法发现但是运行期可能出现的异常。我们应该提前做好准备工作,捕获该异常,要么重新指向某个default文件路径,要么终止该线程。
2、throw和throws处理指的是并不对异常进行处理,将异常抛给该方法的调用者,也就是它的上一层。你可以理解成甩锅,就是“都是你叫我做这个工作才出了这个错误,你要为这个错误负责”。两者的不同之处在于thorw是在方法内部声明,是一个动词,标识我“抛出了这个异常”,throws则标记在方法声明处,标识这个方法可能抛出这几种异常。
2018年06月07日 07点06分
10
腿毛炸毛了
throw在方法内部,是需要自己加条件判断是否异常,发现异常后再抛出的吗?是这样用吗?
2018年06月07日 08点06分
小岚家的霞琳
@腿毛炸毛了
比如这样的代码 double d1 = 15; double d2 = 0; double d3 = 0; try{ d3 = d1/d2; }catch(Exception e){ throw new RuntimeExpection("被除数不可为零!"); } 这种是捕获之后重新包装成一个异常往外层抛
2018年06月07日 09点06分
小岚家的霞琳
@腿毛炸毛了
,还有一种是捕获异常之后直接处理的,例如如果除数为0时,我们也要有一个结果为0,这个时候catch块内就变成了 double d1 = 15; double d2 = 0; double d3 = 0; try{ d3 = d1/d2; }catch(Exception e){ d3 = 0;}
2018年06月07日 09点06分
小岚家的霞琳
@腿毛炸毛了
有一点请务必记住,异常如果始终不处理总是向着调用它的那一层抛,最终会抛到用户面前,对于用户来说体验是很糟糕的,而且还可能把程序内部的一些关键信息暴露出来,异常是越早处理越好的。
2018年06月07日 09点06分
1