Yuan-.- 2021-10-02 22:20 采纳率: 100%
浏览 28
已结题

Java如何捕获异常!类型不匹配如何捕获异常鸭!

public class Test extends Exception{
public static void main(String[] args) throws Exception {

        try {
            MyDate d1 = new MyDate(1999, 1, 1);
            MyDate d2 = new MyDate(2009, 4, 1);
            MyDate d3 = new MyDate(a, 1, 1);
            MyDate d4=new MyDate(-1, 13, 32);
            d1.print();
            d2.print();
            d3.print();
            d4.print();
        }catch (Exception e) {
            throw new Exception("\n自定义异常类!");
        }
}

}

请问,如果我要捕获这个d3创建对象错误,数据类型不匹配,如何捕获呢,我试了很多方法,都不能成功!
不会显示我要输出的语句。直接出现系统错误。

img

程序的类代码:

public class MyDate extends  Exception{
    //属性:
    private int year,month,day;
    boolean isRunyear;
    //构造器:
    public MyDate(){
        this.year=1999;
        this.month=1;
        this.day=1;
    }
    public MyDate(int year, int month, int day){
            try {
                setYear(year);
                setMonth(month);
                setDay(day);
            }catch (Exception e){
                System.out.println("Error!");
            }

    }
    //方法:
    public int getYear() {
        return year;
    }
    public void setYear(int year) {
            this.year = year;
    }
    public int getMonth() {
        return month;
    }
    public void setMonth(int month) {
        this.month = month;
    }
    public int getDay() {
        return day;
    }
    public void setDay(int day) {
            this.day = day;
    }
    public String isRunyear(){
        if(year%4==0&&year%100!=0){
            isRunyear=true;
        }
        if(isRunyear==true) {
            return "闰年!";
        } else{
            return "不是闰年!";
        }
    }
    public void print(){
        if(year<0) {
            System.out.println("年份不能为负数!");
        }else {
            System.out.println(getYear() + "年" + getMonth() + "月" + getDay() + "日  " + isRunyear());
        }
    }
}

  • 写回答

1条回答 默认 最新

  • weixin_42346558 2021-10-02 23:02
    关注

    你这不是异常问题了,找不到a是编译都不通过,运行都没运行
    对于异常,可以考虑

    public void print(){
            if(year<0) {
                System.out.println("年份不能为负数!");
            }else {
                System.out.println(getYear() + "年" + getMonth() + "月" + getDay() + "日  " + isRunyear());
            }
        }
    
    // 抛出java内部异常,定义信息
    public void print(){
            if(year<0) {
               throws new RuntimeException("年份不能为负数!")
            }else {
                System.out.println(getYear() + "年" + getMonth() + "月" + getDay() + "日  " + isRunyear());
            }
        }
    
    // 自定义异常,对于DateEroorException需要自己实现,继承RuntimeException即可
    public void print(){
            if(year<0) {
               throws new DateEroorException("年份不能为负数!")
            }else {
                System.out.println(getYear() + "年" + getMonth() + "月" + getDay() + "日  " + isRunyear());
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月11日
  • 已采纳回答 10月3日
  • 创建了问题 10月2日

悬赏问题

  • ¥15 MATLAB卫星二体模型仿真
  • ¥15 怎么让数码管亮的同时让led执行流水灯代码
  • ¥20 SAP HANA SQL Script 。如何判断字段值包含某个字符串
  • ¥85 cmd批处理参数如果含有双引号,该如何传入?
  • ¥15 fx2n系列plc的自控成型机模拟
  • ¥15 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
  • ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
  • ¥15 c语言数据结构高铁订票系统