异常概念梳理及练习

  1. 运行时异常与一般异常有何异同 ?

    相同点

    两种异常同属于Exception父类。

    不同点

    1、运行时异常

    运行时异常,都是RuntimeException类及其子类异常,可捕捉可不捕捉处理,若不捕捉,则往上层抛出。

    2、一般异常

    一般异常,是RuntimeException以外的异常,类型上都属于Exception类及其子类。必须在代码中进行声明处理。

  2. JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
    • 异常处理try catch 或者throws

    • try: 将可能发生异常的代码 用{}包裹起来

    • catch:捕获特定的异常(如果预测多个异常先写范围小,后写范围大的)

    • 如果try中出现异常则程序将不继续执行try中的代码,而直接跳到catch里面

      throws:用在方法上,表示此方法可能出现异常;但对方法出现的异常不做处理,上交给 上级(方法调用处main)处理

      throw:声明异常,使用在方法内部,jdk中有很多异常,如果这些内置的异常 仍然不能满足项目的需求,那么就需要创建 自定义异常。

      继承Exception

      使用throw自定义异常

      finally无论运行是否正常都会执行的代码

      即使代码代码中有return 也会执行finally里面的代码

练习题

 /*
    	编写一个计算N个整数平均值的程序。程序应该提示用户输入N的值,如何必须输入所有N个数。如果用户输入的值是一个负数,则应该抛出一个异常并捕获,提示“N必须是正数或者0”。并提示用户再次输入该数(自定义异常)
    */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("——————————————————————");
        System.out.println("要计算几个整数的平均值呢?");
        try {
            int i = sc.nextInt();
            if (i<0){//对个数进行判断,若个数为负数则创建异常对象
               // throw new IllegalArgumentException();
                throw new ScoreException();
            }
            System.out.println("你需要输入"+i+"个数");
            double sum =0;
            for (int x =0,a=0;x<i;x++){//。创建循环,对输入各个数的值进行判断,将输入合格值进行累加,直至循环结束
                System.out.println("请输入第" + (x + 1) + "个数");
                a=sc.nextInt();
                try {
                    if (a<0){//不合格值,创建异常对象
                        throw new ScoreException();
                    }
                    sum+=a;
                } catch (ScoreException e) {
                    System.out.println("输入的数必须是正整数或0,请重新输入该数");
                    x -= 1;//让重新输入这个值
                }
            }
            System.out.println("一共"+i+"个数,和为:"+sum+",平均值为:"+sum/i);
        }catch (ScoreException e){
            System.out.println("输入正整数");
        }

    }
}
/*
自定义异常
 */
public class ScoreException extends Exception{
    public ScoreException() {}

    public ScoreException(String message) {
        super(message);
    }
}

思路历程:题目要求自定义异常,便写了一个自定义异常,其中需要两种判断,第一让用户输入这N个求平均值时,N值是否为负,若个数为负数则创建异常对象;第二用户输入每个数的值时都需要进行判断是否为负;则让两种进行嵌套,并创建过程变量。创建循环,对输入各个数的值进行判断,将输入合格值进行累加,直至循环结束。求平均值,则累加值/数的个数即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值