我想创建一个url对象,并使用url做一些事情。
例如,
void downloadPage()
{
URL url=new URL("http://www.google.com");
do(url);
}
代码无法编译,因为URL构造函数声明MalformatedException
,我必须声明异常或尝试捕获它。但我认为这两种方式都没有意义,因为url字符串不会改变,这种异常是不可能被抛出的。
我应该如何处理这种情况?
答案 0 :(得分:2)
你可以这样做:
try {
throwsCheckedException();
} catch(CheckedException e) {
throw new RuntimeException(e);
}
这样一来,如果你错了就会抛出异常,但是如果你确定不会发生这种情况你就不必处理它。这可能不适合生产代码。如果程序对于不是您的人来说很重要,那么更好的解决方案可能是以适当的方式记录它。
你真的不能确定一个例外永远不会抛出,我个人已经发生了几次,我很确定它不会这样做。
另一种方式是以一种狡猾的方式处理它:
// in some utility class
public static void exitWithError(Throwable e, String msg) {
dumpStackTraceToFile(e); // something you should have
JOptionPane.showMessageDialog(null, msg);
System.exit(1); // force JVM exit when the dialog closes
}
// wherever this should be, only do it once
static final URL GOOGLE;
static {
try {
GOOGLE = new URL("http://google.com");
} catch(MalformedURLException e) {
exitWithError(e, "Somebody changed the Google URL!");
}
}
答案 1 :(得分:0)
你可以根据我的理解将它包围在try / catch中。
void downloadPage()
{
try {
URL url=new URL("http://www.google.com");
do(url);
} catch(MalformedException me) {
System.out.println("caught this: " + me);
}
}
答案 2 :(得分:0)
尝试抓住它是最好的方法。如果您不小心将网址编辑为http//www.google.com
,这也可以保护您。
答案 3 :(得分:0)
您必须申报或尝试抓住它。没有其他办法。
在运行之前,编译器无法“检查”您的地址是否格式不正确。