S1l*_*0rm 4 java enums constructor exception
(参考这篇文章:如何从枚举构造函数中抛出异常?)
我真的想做同样的事情.示例代码:
public enum PublicIPWebservice {
AMAZON_WEB_SERVICES("http://checkip.amazonaws.com"),
EX_IP("http://api-ams01.exip.org/?call=ip"),
WHAT_IS_MY_IP("http://automation.whatismyip.com/n09230945.asp");
private URL url;
private PublicIPWebservice(String url) throws MalformedURLException {
this.url = new URL(url);
}
public URL getURL() {
return url;
}
}
Run Code Online (Sandbox Code Playgroud)
如果url不正确,程序应该崩溃,因为这将是一个编程错误,所以在构造函数中捕获异常会是错误的,不是吗?
解决这个问题的最佳方法是什么?
您可以捕获它并重新抛出AssertionError:
try {
this.url = new URL(url);
}
catch(MalformedURLException e) {
throw new AssertionError(e);
}
Run Code Online (Sandbox Code Playgroud)