Lombok 给出 java: 未报告的异常 java.lang.Exception;必须被抓住或宣布被扔出

问题描述 投票:0回答:1

如果我没记错的话,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;
    }

java lombok getter-setter
1个回答
0
投票

我认为这里发生的事情是生成的

equals
hashCode
toString
方法将尝试调用
getToTime
。由于这些方法不能抛出已检查的异常,因此您需要决定是否更改
getToTime
以使其不会抛出异常,或者显式编写这些方法来捕获它。

我建议更改类以在设置

toTimeString
时引发异常,以便可以在引入错误时处理错误,而不是在随后每次访问错误时进行处理。我还建议声明一个更具体的异常类型。

© www.soinside.com 2019 - 2024. All rights reserved.