如果我没记错的话,Lombok的@Data给出了getter、setter等util方法。开发者可以自定义其生成的方法。我以前也这么做过。 但最近我遇到了一个场景,我无法自定义方法。 这是我的定制方法:
@Data
public class DummyClass {
private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
private static Calendar cal = new GregorianCalendar();
public String toTimeStr;
public Long toTime;
public long getToTime() throws Exception {
if(this.toTime==null){
cal.setTime(dateFormat.parse(this.toTimeStr));
this.toTime = cal.getTimeInMillis();
}
return this.toTime;
}
}
我收到编译错误: ""java: 未报告的异常 java.lang.Exception;必须被抓住或宣布被抛出""
但是如果我在“getToTime()”方法中添加try-catch,那么看起来就很好。 谁能提供我所缺少的见解吗?
这里是在getter方法中添加try-catch时的代码。
public long getToTime(){
try{
if(this.toTime==null){
cal.setTime(dateFormat.parse(this.toTimeStr));
this.toTime = cal.getTimeInMillis();
}
}catch (Exception e){
}
return this.toTime;
}
我认为这里发生的事情是生成的
equals
、hashCode
和 toString
方法将尝试调用 getToTime
。由于这些方法不能抛出已检查的异常,因此您需要决定是否更改 getToTime
以使其不会抛出异常,或者显式编写这些方法来捕获它。
我建议更改类以在设置
toTimeString
时引发异常,以便可以在引入错误时处理错误,而不是在随后每次访问错误时进行处理。我还建议声明一个更具体的异常类型。