全国咨询/投诉热线:400-618-9090

首页新闻动态正文

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

更新时间:2019-10-07 来源: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课程详情。

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名