【发布时间】:2020-06-19 13:34:58
【问题描述】:
我写了这个返回财政年度的类:
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.util 日期时间的东西都已经过时了,最好的办法就是把大部分东西扔掉。但你是对的,构造函数不应该有这段代码,让其他代码处理转换并将结果传递给构造函数。
-
约翰尼莫普是正确的。不要捕获任何异常。有了
catch,如果字符串参数无效,构造函数将创建一个带有空日历的 FiscalDate 实例。那是你要的吗?您是否希望程序中的 FiscalDate 对象的 getFiscalYear 方法将因神秘的 NullPointerExceptions 而失败? -
除其他建议外,还将
calendarDate字段标记为final。如果你一开始就这样做了,编译器将不允许你产生异常吞咽的 catch 块。
标签: java