使用异常处理机制解决问题

Java中的异常处理是通过五个关键字来实现的,即try(尝试),catch(捕捉),finally(最后),throw(抛,投)和throws。

一、使用try-catch-finally处理异常

把可能出现异常的代码放入try语句块中,并使用catch语句块捕获异常。

代码如下:

import java.util.InputMismatchException;
import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        try{
            Scanner in = new Scanner(System.in);
            System.out.println("请输入被除数");
            int num1 = in.nextInt();
            System.out.println("请输入除数");
            int num2 = in.nextInt();
            System.out.println(num1+"/"+num2+"="+num1/num2);
        }catch (InputMismatchException e){
            System.out.println("除数必须是整数");
        }catch (ArithmeticException e){
            System.out.println("除数不能为零");
        }catch (Exception e){
            System.out.println("未知异常");
        }finally {
            System.out.println("感谢使用");
        }
    }
}

1.若try语句块中所有语句正常执行完毕,那么catch语句块中的所有语句都将被忽略,finally语句块也会被执行。

2.若try语句块在执行过程中发生异常,并且这个异常与catch语句块中声明的异常类型匹配,那么try语句块中剩下的代码都将被忽略,而相应的catch语句块将会被执行。

3.若try语句块在执行过程中发生异常,无论这种异常能否被catch语句块捕获到,都将执行finally语句块中的代码。

4.即使catch语句块中存在return语句,finally语句块中的语句也会被执行。

5.finally语句块中的语句不执行的唯一情况是在异常处理代码中执行了System.exit(1); 退出Java虚拟机。

6.在使用多重catch语句块时,catch语句块的排列顺序必须是从子类到父类,最后一个一般都是Excrption类。

 

二、使用throws声明抛出异常

       如果在一个方法体中抛出了异常,并希望调用者能够及时的捕获异常,Java语言中通过关键字throws声明某个方法可能抛出的各种异常以通知调用者。throws可以同时声明多个异常,之间用逗号隔开。

代码如下:

import java.util.InputMismatchException;
import java.util.Scanner;

public class test2 {
    public static void main(String[] args) {
        try {
            divide();
        }catch (InputMismatchException e){
            System.out.println("除数必须是整数");
        }catch (ArithmeticException e){
            System.out.println("除数不能为零");
        }catch (Exception e){
            System.out.println("未知异常");
        }finally {
            System.out.println("感谢使用");
        }
    }

    public static void divide() throws Exception {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入被除数");
        int num1 = in.nextInt();
        System.out.println("请输入除数");
        int num2 = in.nextInt();
        System.out.println(num1+"/"+num2+"="+num1/num2);
    }
}

三、使用throw抛出异常

       除了系统自动抛出异常外,再编程过程中有些问题是系统无法自动发现并解决的,此时需要程序员而不是系统来自行抛出异常,把问题交给调用者去解决。

throw和throws的区别:

       1.作用不同:throw用于程序员自行产生并抛出异常,throws用于声明该方法内抛出了异常。

       2.使用的位置不同:throw位于方法内部,可以作为单独语句使用;throws必须跟在方法参数列表的后面,不能单独使用。

       3.内容不同:throw抛出一个异常对象,只能是一个;throws后面跟异常类,可以跟多个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值