Java基础 9.6

1.自定义异常

基本概念

当程序中出现某些错误,但该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息

步骤

  1. 定义类:自定义异常类名(自己命名)继承Exception或RuntimeException
  2. 如果继承Exception 属于编译异常
  3. 如果继承RuntimeException 属于运行异常(一般来说 继承RuntimeException)
package com.logic.customexception_;

import java.util.Scanner;

/**
 * @author logic
 * @version 1.0
 */
public class CustomException {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入年龄: ");
        int age = scanner.nextInt();
        //范围在20-120之间 否则抛出一个异常
        if (!(age >= 20 && age <= 120)) {
            //通过构造器设置信息
            throw new AgeException("年龄需要在18-120之间");
        }
        System.out.println("年龄范围正确");
    }
}

//一般情况下 自定义异常是继承RuntimeException
//好处是 我们可以使用默认处理机制 比较方便
class AgeException extends RuntimeException {
    public AgeException(String message) {
        super(message);
    }
}

2.throws和throw区别

3.练习

package com.logic;

import java.util.Scanner;

/**
 * @author logic
 * @version 1.0
 */
/*编写应用程序EcmDef.java,接收命令行的两个参数(整数),计算两数相除。
计算两个数相除,要求使用方法 cal(int n1,int n2)
对数据格式不正确、缺少命令行参数、除0 进行异常处理。
 */
public class Homework01 {

    public static double cal(int n1, int n2) {
        return n1 / n2;
    }

    public static void main(String[] args) {
        //先判断是否为两个数
        try {
            if (args.length != 2) {
                throw new ArrayIndexOutOfBoundsException("参数个数不对 需要输入两个数");
            }

            int n1 = Integer.parseInt(args[0]);
            int n2 = Integer.parseInt(args[1]);

            double res = cal(n1, n2);

            System.out.println("res = " + res);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println(e.getMessage());
        } catch (NumberFormatException e) {
            System.out.println("参数格式不正确,需要输入整数");
        } catch (ArithmeticException e) {
            System.out.println("出现了除以0异常");
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值