在java中的方法后面加个throws抛出异常有什么作用?我试了不加的运行效果一样

publicstaticvoidshow()throwsException{Scannerinput=newScanner(System.in);System.out.p... public static void show() throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("请输入被除数:");
int num = input.nextInt();
System.out.println("请输入除数");
int num1 = input.nextInt();
System.out.println(String.format("%d / %d = %d",num,num1,num/num1) );
}
public static void main(String[] args) {

try{
show();

}catch(Exception e){
System.out.println("输入错误,除数和被除数必须是整数");
System.out.println("未知异常");
e.printStackTrace();
}finally{

System.out.println("谢谢使用本程序");
}
}
展开
 我来答
kanful
推荐于2017-11-25 · TA获得超过2116个赞
知道小有建树答主
回答量:1529
采纳率:0%
帮助的人:584万
展开全部
把异常抛给调用它的地方,如果你不加的话,main里的try catch是拿不到 这个异常的。也就是说,你show方法出错了。上一次也不知道怎么回事。。。
同时,你加上throw exception。调用 的地方就必须try catch,不然编译都不过。。这样代码就更健壮了。不会跟c语言一样,一出错,没处理。系统可能就崩溃了。
更多追问追答
追问
方法后面没加throws Exception ,main里面也捕捉到异常了,怎么回事?
追答
默认为把exception往上一级抛。所以throw exception。但如果你没加这一句。main方法里,可以不用try catch。如果加了。main方法必须try catch。或者再在后面throw exception。
这个要看经验。。。你现在很难理解。
我觉得应该是这样。

如果你的方法是别人要调用的,你又明知道可能会出错异常的代码。比如算数。输入输出流。当然,你要是简单到可以肯定不会出异常,就可以不做处理。你就应该把代码内部先try catch。然后再throw 一个自定义异常。这样别人就知道出在哪里。
ublic static void show() throws BusinessException{
try{
Scanner input = new Scanner(System.in);
System.out.println("请输入被除数:");
int num = input.nextInt();
System.out.println("请输入除数");
int num1 = input.nextInt();
System.out.println(String.format("%d / %d = %d",num,num1,num/num1) );
}catch(Exception e){
throw new BusinessException("显示异常",e);
}
}

BusinessException是自定义异常类。
百度网友ff3e920
2012-05-30 · TA获得超过454个赞
知道答主
回答量:139
采纳率:76%
帮助的人:16.8万
展开全部
方法后边加throws XXX 声明该方法将抛出指定异常(Throwable 及其子类)。调用该方法的方法中需对可能抛出的异常做处理,例如使用try catch块包裹,或调用方法也声明向上抛出该异常或异常的父类。
方法后不加throws XXX,且其内部并没有trh catch块,则出现异常时默认向上抛出。
何时抛出异常,何时捕获并处理异常,什么是运行时异常,什么是非运行时异常请自行查找。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
山水青蛙
2012-03-27
知道答主
回答量:78
采纳率:100%
帮助的人:39.4万
展开全部
因为下面主函数有try catch,所以上面的exception可以不加
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞小GX
2021-10-15
知道答主
回答量:3
采纳率:0%
帮助的人:1735
展开全部
使用throws和让系统自动抛出异常的区别:
也没啥区别,系统自动抛出也是一层一层往上抛的,就是调用有throws修饰过的方法的程序必须使用try catch括起来,就相当于一个编译期的异常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叔叔叔叔叔叔了
2012-03-27
知道答主
回答量:11
采纳率:0%
帮助的人:9.3万
展开全部
类在哪里!static方法的调用得把类名加上!
追问
我的方法是类方法,不加也可以运行
追答
比如类名为A   这样A.show()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式