第八章 异常处理 ② 代码

1.异常处理

代码的路径如下如所示:
在这里插入图片描述

代码如下:

1.1捕获异常: try…catch / 多重catch / try…catch…finally

package com.yzh7.test5;

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

/**
 * @author: hy
 * @create: 2022-07-05 11:03:51
 */
public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        try {
            System.out.println("请输入第一个数:");
            int num1 = scanner.nextInt();
            System.out.println("请输入第二个数:");
            int num2 = scanner.nextInt();
            //计算结果
            int res = num1 / num2;
            System.out.println("结果:" + res);

            System.out.println("定义数组长度为2...");
            return;
            //int[] nums = new int[2];
            //nums[2]=res; //触发下标越界异常
        }
        catch (ArithmeticException ex){
            System.out.println("发生数学运算异常了......");
            //通过异常对象,打印异常堆栈
            ex.printStackTrace();
            //输出异常信息
            System.out.println("异常信息:"+ex.getMessage());
        }catch (InputMismatchException ex){
            System.out.println("发生输入不匹配了异常....");
            ex.printStackTrace();
            System.out.println("异常信息:"+ex.getMessage());
        }catch (Exception ex){ //粗粒度的异常,前面捕获不到的异常,都可以由exception捕获
            //Exception:可以捕获所有代码异常,但是粒度比较粗,无法体现具体的异常类型
            System.out.println("发生了错误....");
            ex.printStackTrace();
            System.out.println("异常信息:"+ex.getMessage());
        }finally {
            System.out.println("这是finally代码,无论是否出错,这个代码都要执行");
        }

        //粗粒度的异常要放在最后

        System.out.println("========程序结束========");

    }
}

1.2手动抛出异常:throws

package com.yzh7.test5;

/**
 * @author: hy
 * @create: 2022-07-05 11:47:14
 */
public class Test2 {
    //throws Exception:在方法上定义异常抛出声明,表示该方法可能会出错。
    //                  对于方法的调用者必须要进行异常处理
    public static void m1() throws Exception{

    }

    public static void m2() throws Exception{
        System.out.println("这是m2方法");
        m1();
        //方式1:自己进行try catch处理
        //方式2: 在方法上添加异常抛出声明
//        try {
//            m1();
//        }catch (Exception ex){
//            System.out.println("调用m1方法出错了");
//        }
    }

    public static void main(String[] args) throws Exception {
        m2();
    }
}

1.3自定义异常 **设置年龄异常类(继承Exception)

package com.yzh7.test5;

/**
 * 自定义年龄异常类
 * @author: hy
 * @create: 2022-07-05 12:00:47
 */
public class AgeException extends Exception{
    public AgeException(String message) {
        super(message);
    }
}

1.4手动抛出异常:throw

package com.yzh7.test5;

/**
 * @author: hy
 * @create: 2022-07-05 11:54:10
 */
public class Student {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    //手动抛出异常,在方法上添加抛出声明,对应方法的调用者要做异常处理
    public void setAge(int age) throws AgeException {
        if(age<0|| age>100){
            //手动抛出异常
            //throw new Exception("年龄不是有效值");
            throw new AgeException("年龄不是有效值");
        }else {
            this.age = age;
        }
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

1.5捕获异常: try…catch

package com.yzh7.test5;

/**
 * @author: hy
 * @create: 2022-07-05 11:57:11
 */
public class Test3 {
    public static void main(String[] args) {
        try {
            Student student = new Student();
            student.setName("张三");
            student.setAge(-18);
            System.out.println(student);
        }catch (AgeException ex){
            System.out.println("年龄设置出错....");
        }catch (Exception ex){
            System.out.println("出错了:"+ex.getMessage());
        }
        //try..catch..finally  throw throws
    }

}

一、table表格 背景

图片、代码的路径如下如所示:

代码如下:

// An highlighted block
var foo = 'bar';

运行结果如下:
#pic_center

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值