admin 管理员组文章数量: 1087675
2024年3月19日发(作者:excel中有哪些函数公式)
们试想一下,如果去调用一个别人写的方法时,否能知道别人写的方法否会有异常
呢?这很难出判断的。针对这种情况,Java中允许在方法的后面使用throws关键
字对外声明该方法有可能发生的异常,这样调用者在调用方法时,就明确地知道该
方法有异常,并且必须在程序中对异常进行处理,否则编译无法通过。
throws关键字声明抛出异常的语法格式如下:
修饰符返回值类型方法名
([
参数
1,
参数
2…])throwsExceptiontype1[,ExceptionType2…]{}
从上述语法格式中可以看出,throws关键字需要写在方法声明的后面,throws后
面需要声明方法中发生异常的类型,通常将这种法称为方法声明抛出一个异常。们
通过案例介绍。
例1:
publicclassExample1{
publicstaticvoidmain(String[]args){
intresult=divide(4,2);//调用divide()方法
n(result);//的方法实现了两个整数相除,并使用throws关键字
声明抛出异常
1
}
publicstaticintdivide(intx,inty)throwsException{
intresult=x/y;//定义一个变量result记录两个数相除的结果
returnresult;//将结果返回
}
}
运行结果:
D:cnitcastchapter04>
:3::未报告的异常Exception;必须对其进行捕获或者声明以便抛出
intresultdivide(4,2);//调用divide()方法
1个
在上面案例1中第3行代码调用divide()方法时传入的第二个参数为2,程序在运
行时不会发生被0除的异常,但由于定义divide()方法时声明抛出了异常,调用者
在调用divide()方法时就必须进行处理,否则就会发生编译。案例1进行,在调用
divide()方法时对其进行try…catch处理。例2:
publicclassExample2{
publicstaticvoidmain(String[]args){
try{
intresult=divide(4,2);//调用divide()方法
n(result);
}catch(Exceptione){//对捕获到的异常进行处理
tackTrace();//打印捕获的异常信息
}
}
//的方法实现了两个整数相除,并使用throws关键字声明抛出异常
publicstaticintdivide(intx,inty)throwsException{
intresult=x/y;//定义一个变量resu1t记录两个数相除的结果
returnresult;
2
}
}
运行结果:
D:cnitcastchapter04>javaExample2
2
例2中,由于使用了try…catch对divide()方法进行了异常处理,所以程序编译通
过,正确地打印出了运行结果2。
当在调用divide()方法时,如果不知道如何处理声明抛出的异常,也可以使用
throws关键字继续将异常抛出,这样程序也能编译通过,但需要注意的,程序一
旦发生异常,如果没有被处理,程序就会非正常终止。
例3:
publicclassExample3{
publicstaticvoidmain(String[]args)throwsException{
intresult=divide(4,0);//调用divide()方法
n(result);
}
//的方法实现了两个整数相除,并使用throws关键词字声明抛出异常
publicstaticintdivide(intx,inty)throwsException{
intresult=x/y;//定义一个变量result记录两个数相除的结果
returnresult;//将结果返回
}
}
运行结果
D:cnitcastchapter04>javaExample3
Exceptioninthread“main”eticException:/byzero
(:8)
(3)
3
例3中,在使用main(方法调用divide()方法时,并没有对异常进行处理而继续使
用throws关键字将Exception抛出,从运行结果可以看出,程序虽然可以通过编
译,但在运行时由于没有对“/byzero”的异常进行处理,最终导致程序终止运行。
以上们介绍了,java中throws关键字的用法,如果深入学习java知识,请击页面
按钮了解java课程详情。
4
版权声明:本文标题:Java异常之throws关键字用法介绍 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710845743a575973.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论