首页 > 解决方案 > Java尝试在构造函数中捕获

问题描述

我写了这个返回财政年度的类:

public class Fiscal {

private Calendar calendar;

public FiscalDate(String date) {
    try {
        DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Date formattedDate = formatter.parse(date);
        this.calendarDate = Calendar.getInstance();
        this.calendarDate.setTime(formattedDate);
    }
    catch (ParseException e) {
        System.out.print(e);
    }
}
}

我正在使用它,如下所示:

String test = new Fiscal("2020-03-31").display();

一切正常,我只是想知道我在构造函数中的 try 和 catch 是否有任何问题?有什么方法可以改进这门课吗?

标签: java

解决方案


是的,就像@Johnny Mopp 在评论中所说,你不应该默默地捕捉异常,而是抛出异常,让实现该类的人选择如何处理它。

public FiscalDate(String date) throws ParseException {
    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date formattedDate = formatter.parse(date);
    calendarDate = Calendar.getInstance();
    calendarDate.setTime(formattedDate);
}
try {
    FiscalDate date = new FiscalDate("my date string");

    // some code that utilizes date
} catch (ParseException exception) {
    // darn, something went wrong, time to handle it!
}

推荐阅读