繁体   English   中英

为什么会收到此未处理的异常?

[英]Why am I getting this Unhandled exception?

使用接口来处理常量,我无法调用引发异常的预定义方法。

  public interface ParametresConstantes {
    public static final String DB_CONNEXION = ChargementProjetProperties.getInstance().getValueByKey("conn");
//a red line under the right part of this instruction.
    public static final int SIZE_TEXT_FIELD = 20;
}



public String getValueByKey (String key) throws Exception
{
    String value = null;
    load();
    if (props.containsKey(key))
    {
        value = props.getProperty(key);
    }
    else
    {
        throw new Exception ("no key found");
    }
    return value;
}

如何解决?

编辑

如下文所述,因为静态块不能在界面,但在实现它的类工作,因为变量是最终的,不能分配,我暂时在替换else块的value="" ,并删除掷并保持休息。

谢谢

如您所说,问题出在您不能使用在此处引发异常的方法这一事实。

从语法上讲,它将与静态初始化块一起工作:

public static URI uri;

static {
  try {
    uri = new URI("http://www.example.com/image.jpg");
  } catch(Exception e) {
    //Eventually throw new IllegalArgumentException();
  }
}

但是我强烈建议不要这样做。 恕我直言,静态初始化块是设计存在问题的线索。

我认为定义方法更干净:

public String getDBConnection () {
  return ChargementProjetProperties.getInstance().getValueByKey("conn");
}

getValueByKey方法会引发异常,您不会在任何地方捕获它。 这就是为什么它说存在未处理的异常。 您应该在接口中声明DB_CONNEXION ,但在可以处理异常的下游(实现该接口的类)的某个位置定义它。

static final String DB_CONNEXION初始化等效于静态构造函数,并且在其中引发或引发异常的情况下,没有机会处理该异常。 更好的方法是使静态构造函数保持无异常或注册UncaughtExceptionHandler

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM