导读:throws和throw有什么区别 muzichouchou 1年前他留下的回答 已收到1个回答 依珂sun 春芽 该名网友总共回答了17个问题,此问答他的回答如下:...
throws和throw有什么区别
muzichouchou
1年前他留下的回答
已收到1个回答
依珂sun
春芽
该名网友总共回答了17个问题,此问答他的回答如下:采纳率:70.6%
throw则是指抛出的一个具体的异常类型.
通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息.
throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;
throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出.
如果在方法中会有异常被抛出而你又不希望在这个方法体内对此异常进行处理,可以使用throws在声明方法的时候同时声明他可能会跑出的异常.比如:
public void go() throws SQLException{
Connection conn = ds.getConnection();
...}本来ds.getConnection()将可能会抛出SQLException,但现在使用throws 在方法名处声明了,所以在方法体中就不需要 try/catch 块来处理SQLException 了throws语句throws用来标明一个成员函数可能抛出的各种"异常".对大多数Exception子类来说,Java编译器会强迫你声明在一个成员函数中抛出的"异常"的类型.如果"异常"的类型是Error或RuntimeException,或它们的子类,这个规则不起作用,因为这copy;在程序 的正常部分中是不期待出现的.如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型.这就重新定义了成员函数的定义语法:type method-name(arg-list) throws exception-list { }下面是一段程序,它抛出了一个"异常", 但既没有捕捉它,也没有用throws来声明.这在编译时将不会通过.
class ThrowsDemo1{static void procedure( ) {
System.out.println("inside procedure");
throw new IllegalAccessException("demo");}public static void main(String args[]){procedure( );}}为了让这个例子编译过去,我们需要声明成员函数procedure抛出了IllegalAccessException,并且在调用它的成员函数main里捕捉它.下面是正确的例 子:
class ThrowsDemo{static void procedure( ) throws IllegalAccessException{System.out.println("inside procedure");
throw new IllegalAccessException("demo");}public static void main(String args[]){try { procedure( ); }
catch (IllegalAccessException e) {
System.out.println("caught " + e);}}}下面是输出结果: C:java ThrowsDemo inside procedure caught java.lang.IllegalAccessException: demo
1.两者位置不同.
1年前他留下的回答
9
以上就是小编为大家介绍的throws和throw有什么区别 的全部内容,如果大家还对相关的内容感兴趣,请持续关注上海建站网!
标签:
内容声明:网站所展示的内容均由第三方用户投稿提供,内容的真实性、准确性和合法性均由发布用户负责。上海建站网对此不承担任何相关连带责任。上海建站网遵循相关法律法规严格审核相关关内容,如您发现页面有任何违法或侵权信息,欢迎向网站举报并提供有效线索,我们将认真核查、及时处理。感谢您的参与和支持!