【问题标题】:Java Malformed URL ExceptionJava 格式错误的 URL 异常
【发布时间】:2014-08-16 12:05:51
【问题描述】:

我正在尝试在我正在构建的 android 应用程序中发出 http POST 请求,但无论我使用什么 url 来请求,Eclipse 都会不断引发格式错误的 URL 异常。我尝试了其中一个 android 教程中的一行代码:

URL url = new URL("https://wikipedia.org");

即使这样也会触发错误。对于我尝试创建的任何 URL,Eclipse 不断引发此错误是否有原因?

【问题讨论】:

  • 发布您的代码和 LogCat。
  • 对我来说很好。发布堆栈跟踪。
  • 请把代码放在你的问题中,而不是在 cmets 中。
  • 你的意思是异常真的被抛出了吗?或者您只是说 Eclipse 一直在告诉您有关异常的信息?如果是后者,那是因为 MalformedURLException 是一个checked exception,也就是说,你必须在代码中显式处理它,要么将其包装在 try/catch 语句中,要么将 throws MalformedURLException 添加到方法存根中。
  • 这一行是否在 try-catch 块内?

标签: java android malformedurlexception


【解决方案1】:

它没有引发异常,它抱怨你没有处理the possibility that it might,即使它不会,因为在这种情况下的 URL 不是格式错误的。 (Java 的设计者认为“检查异常”这个概念是个好主意,尽管在实践中 it hasn't worked well.

要关闭它,请将throws MalformedURLException 或其超类throws IOException 添加到方法声明中。例如:

public void myMethod() throws IOException {
    URL url = new URL("https://wikipedia.org/");
    ...
}

或者,将烦人的异常作为未经检查的异常捕获并重新抛出:

public void myMethod() {
    try {
        URL url = new URL("https://wikipedia.org/");
        ...
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

Java 8 添加了 UncheckedIOException 类,用于在您无法处理它们时重新抛出 IOExceptions。在早期的 Java 版本中,使用RuntimeException

【讨论】:

  • 检查异常不是一个坏主意。在MalformedURLException 的情况下它们是如何使用的。 MalformedURLException 不应该是一个检查异常,但 Java 团队出于某种原因这样做了,我还不明白。
  • 未处理的异常表示异常需要处理
  • 在 asynch doInBackground 中使用了新的 url...只有这样我才能绕过错误。谢谢!
猜你喜欢
  • 2017-01-01
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
相关资源
最近更新 更多