全国咨询热线:400-618-9090

首页新闻动态正文

Java异常之throws关键字用法介绍

创建时间:2019-10-07 15:05:07.0 来源:throws关键字用法介绍

我们试想一下,如果去调用一个别人写的方法时,是否能知道别人写的方法是否会有异常呢?这是很难做出判断的。针对这种情况,Java中允许在方法的后面使用throws关键字对外声明该方法有可能发生的异常,这样调用者在调用方法时,就明确地知道该方法有异常,并且必须在程序中对异常进行处理,否则编译无法通过。

 

throws关键字声明抛出异常的语法格式如下:

修饰符 返回值类型 方法名([参数1,参数2…])throws Exceptiontype1[,ExceptionType2…]{ }



1570431749588_java异常处理.jpg


 

从上述语法格式中可以看出,throws关键字需要写在方法声明的后面,throws后面需要声明方法中发生异常的类型,通常将这种做法称为方法声明抛出一个异常。我们通过下面案例介绍。

例1:

 

public class Example1{
   public static void main(String [] args){
        int result=divide(4,2);     //调用 divide()方法
        System.out.println(result);  //下面的方法实现了两个整数相除,并使用 throws关键字声明抛出异常
   }
   public static int divide(int x ,int y) throws Exception{
        int result=x / y;  //定义一个变量 result记录两个数相除的结果
        return result;  //将结果返回
   }
}

 

运行结果:

D:\cn\itcast\chapter04>java Example1.java

Example1.java:3: 错误:未报告的异常错误Exception;必须对其进行捕获或者声明以便抛出

int result divide(4, 2);//调用 divide()方法

1个错误


在上面案例1中第3行代码调用divide()方法时传入的第二个参数为2,程序在运行时不会发生被0除的异常,但是由于定义divide()方法时声明抛出了异常,调用者在调用divide()方法时就必须进行处理,否则就会发生编译错误。下面案例1进行修改,在调用divide()方法时对其进行try…catch处理。例2:

 

public class Example2{
   public static void main(String [] args){
      try {
         int result= divide(4,2);    //调用 divide()方法
         System.out.println(result);
      } catch( Exception e) {   //对捕获到的异常进行处理
         e.printstackTrace(); //打印捕获的异常信息
      }       
   }
   //下面的方法实现了两个整数相除,并使用 throws关键字声明抛出异常
   public static int divide (int x, int y) throws Exception {
      int result=x / y;   //定义一个变量resu1t记录两个数相除的结果
      return result;
   }
}

 

运行结果:

D:\cn\itcast\chapter04>java Example2

2


例2中,由于使用了try…catch对divide()方法进行了异常处理,所以程序编译通过,正确地打印出了运行结果2。

当在调用 divide()方法时,如果不知道如何处理声明抛出的异常,也可以使用throws关键字继续将异常抛出,这样程序也能编译通过,但需要注意的是,程序一旦发生异常,如果没有被处理,程序就会非正常终止。

例3:

public class Example3{
   public static void main(String[] args) throws Exception {
      int result= divide(4,0); //调用divide()方法
      System.out.println(result);
   }
   //下面的方法实现了两个整数相除,并使用throws关键词字声明抛出异常
   public static int divide(int x,int y) throws Exception {
      int result=x /y;  //定义一个变量result记录两个数相除的结果
      return result;  //将结果返回
   }
}


运行结果

D:\cn\itcast\chapter04>java Example3

Exception in thread “main” java.lang.ArithmeticException:/  by zero

         at Example25.divide(Exaple3.java:8)

         at exmaple25.main(Examle3.java3)


例3中,在使用main(方法调用divide()方法时,并没有对异常进行处理而是继续使用throws关键字将Exception抛出,从运行结果可以看出,程序虽然可以通过编译,但在运行时由于没有对“/by zero”的异常进行处理,最终导致程序终止运行。

以上我们介绍了,java中throws关键字的用法,如果深入学习java知识,请点击页面咨询按钮了解黑马程序员java课程详情。

在线咨询 我要报名