throws和throw有什么区别
作者:小雪发布时间:2023-02-04浏览:456
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: demo1.两者位置不同.
相关推荐
- 人人分期倒闭了吗,人人聚财定投宝,人人推借贷宝后台
- 评论眼什么意思
- 第一次玩刺激战场怎样领取降落伞
- 科三挂三次了转自动挡能过吗
- 大学生贷款菠萝贷 人人分期都倒闭了还是怎么样
- 铸铁减速带的材料说明是什么?
- 木粉一般是什么材料
- 焖鸭肉的家常做法
- 人人分期会倒闭了,欠的钱还用还吗
- 铸钢减速带作用和橡胶的有何区别
- 大众小型家用车有哪些
- 今天科目三挂了,要不要手动挡换成自动挡?
- 在java中,throw与throws有什么区别
- 北京现代是哪国的汽车品牌
- 和平精英王牌降落伞任务获得方式?
- ao史密斯电热水器的型号
- 铸钢减速带和橡胶减速带哪个好用?
- 双头不锈钢螺栓16*70有4.8和8.8级之分吗?
- 刺激战场中的圆形降落伞如何获得
- 异常处理中throws和throw的区别?