(一) 常见异常的捕获 // // (1) 编写一个程序,分别生成ArrayIndexOutOfBoundsException类型和ArithmeticException类型的异常。

本文深入探讨了Java中常见的异常类型ArrayIndexOutOfBoundsException和ArithmeticException,通过实例演示了如何生成及捕获这两种异常,并解释了为何程序无法同时抛出并捕获多个异常。

这道题不交,wdnmd

public class Test6_1_zxj {
//    (一)  常见异常的捕获
//
//    (1)     编写一个程序,分别生成ArrayIndexOutOfBoundsException类型和ArithmeticException类型的异常。
//
//    (2)     改写程序,对ArrayIndexOutOfBoundsException和ArithmeticException类型异常进行捕获。
//
//    思考:能否同时抛出ArrayIndexOutOfBoundsException类型和ArithmeticException类型的异常?为什么?
//答:不能,程序每次只能捕获一个异常,可以把catch全都去掉,会优先报算数异常,捕获算数异常之后,再运行,会报越界异常

    public static void main(String args[])
    {
        int[] a={1,2,3,4};
        int num=0;
        for(int i=0;i<5;i++)
        {
            try {
                num=a[i]/i;
            }
            catch(ArithmeticException e)
            {
                System.out.println("算术异常");
            }
            catch(ArrayIndexOutOfBoundsException e)
            {
                System.out.println("数组越界异常");
            }
            System.out.println(num);
        }
    }
}

在这里插入图片描述
数组越界异常的输出的1,是num的值

1. 异常处理机制的应用 —— 简易计算器异常处理 1.1 样例 问题描述 编写简易计算器程序,实现两个整数的除法运算,处理以下异常场景: 1.除数为 0:触发ArithmeticException; 2.输入非整数:触发InputMismatchException; 要求:用try-catch捕获异常并给出友好提示,用finally关闭Scanner资源,确保程序不崩溃。 输入输出示例 正常输入: 请输入第一个整数:10 请输入第二个整数:2 计算结果:10 / 2 = 5 资源已释放(Scanner关闭) 异常输入(除数为 0): 请输入第一个整数:8 请输入第二个整数:0 异常提示:除数不能为0,请重新输入有效数字! 资源已释放(Scanner关闭) 异常输入(非整数): 请输入第一个整数:abc 异常提示:输入格式错误!请输入整数类型。 资源已释放(Scanner关闭) 样例代码 import java.util.InputMismatchException; import java.util.Scanner; public class CalculatorExceptionDemo { public static void main(String[] args) { Scanner sc = null; // 声明Scanner,便于finally关闭 try { // 1. 获取用户输入(可能触发InputMismatchException) sc = new Scanner(System.in); System.out.print("请输入第一个整数:"); int num1 = sc.nextInt(); System.out.print("请输入第二个整数:"); int num2 = sc.nextInt(); // 2. 除法运算(可能触发ArithmeticException) int result = num1 / num2; System.out.printf("计算结果:%d / %d = %d\n", num1, num2, result); } catch (ArithmeticException e) { // 捕获“除数为0”异常 System.out.println("异常提示:除数不能为0,请重新输入有效数字!"); // 可选:打印异常堆栈信息(调试用) // e.printStackTrace(); } catch (InputMismatchException e) { // 捕获“输入非整数”异常 System.out.println("异常提示:输入格式错误!请输入整数类型。"); } finally { // 3. 无论是否异常,均关闭Scanner(资源释放) if (sc != null) { // 避免sc为null时调用close()报错 sc.close(); System.out.println("资源已释放(Scanner关闭)"); } } } } 1.2 实验题目 升级简易计算器,支持 “整数数组求” 功能,处理以下异常场景: 1.数组长度为负:触发IllegalArgumentException(通过throw主动抛出); 2.数组索引越界:触发ArrayIndexOutOfBoundsException; 3.输入非整数:触发InputMismatchException; 要求: 用try-catch捕获所有异常,给出对应提示; 用throws在方法声明处声明可能抛出的异常; 用finally确保Scanner资源关闭; 程序执行完毕后打印 “计算器程序结束”。 测试用例 测试场景 1:正常输入(数组长度 2,元素 3、5) 请输入数组长度(正整数):2 请输入2个整数(空格分隔):3 5 数组元素总:8 资源已释放(Scanner关闭) 计算器程序结束 测试场景 2:数组长度为负 请输入数组长度(正整数):-3 异常提示:数组长度不能为负! 资源已释放(Scanner关闭) 计算器程序结束 测试场景 3:输入非整数 请输入数组长度(正整数):2 请输入2个整数(空格分隔):4 abc 异常提示:输入格式错误!请输入整数类型。 资源已释放(Scanner关闭) 计算器程序结束 测试场景 4:数组索引越界(数组长度 2,循环条件 i<=2) 请输入数组长度(正整数):1 请输入2个整数(空格分隔):1 2 异常提示:数组索引越界,请检查数组操作逻辑! 资源已释放(Scanner关闭) 计算器程序结束
最新发布
11-11
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值