Java中的throws与throw关键字

作者:苗老师,华清远见嵌入式学院讲师。

Java中的异常处理还是比较有意思的!就是该你管就你管,不是你该管的,最好不要越级管理!不然我这级管理存在就没有意义!

Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally。这里我主要说一下throw,throws。

throws语句

throws总是出现在方法声明时,用来标明该成员方法可能抛出异常。如果是多个异常,使用逗号隔开。对大 多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是Error或 RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序的正常部分中是不期待出现的。 如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。

throw语句

throw总是出现在方法体中,用来抛出一个异常。程序会在throw语句后立即终止,它后面的语句执行不到。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要抛出的异常。

如果一个方法显示的标识抛出异常,则必须使用try—catch语句。

以下是一个自定义异常类的例子:

class MyException extends Exception { //创建自定义异常类
                     String message; //定义String类型变量
                     public MyException(String ErrorMessagr) {  //父类方法
                             message = ErrorMessagr;
                     }

                           public String getMessage(){   //覆盖getMessage()方法
                             return message;
                     }
             }
             public class Captor { //创建类
                     static int div(int x,int y) throws MyException{//定义方法抛出异常
                             if(y < 0){  //判断参数是否小于0
                                     throw new MyException("除数不能是负数");//异常信息
                             }
                             return x/y;//返回值
                     }
                     public static void main(String args[]){ //主方法
                             try{ //try语句包含可能发生异常的语句
                                     div(3,-1);//调用方法
                             }catch (MyException e) { //处理自定义异常
                                     System.out.println(e.getMessage()); //输出异常信息
                             }
                             catch (Exception e) { //处理其他异常
                                     System.out.println("程序发生了其他的异常");
                                     //输出提示信息
                             }
                     }
             }

本文出自 “嵌入式学习天地” 博客,请务必保留此出处http://farsight.blog.51cto.com/1821374/1547925

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。