我正在使用Jsoup连接到一个网站。我已插入IOException
以检查网站是否超时。
因为我已经处理SocketTimeOutException
,我的IDE不允许我为IOException
添加另一个捕获,这是公平的,我想。
有没有办法告诉Document doc = null;
try
{
doc = Jsoup.connect(Url).proxy(proxy).userAgent(userAgent).timeout(10000).get();
}
catch (IOException e)
{
if (...)
{
if(specificThread.running == false) {
System.out.println("Thread got interrupted! Link visited -> "+ Url);
Thread.currentThread().interrupt();
}
try
{
System.out.println("Localhost detected! If this happens, you're stupid");
doc = Jsoup.connect(Url).userAgent(userAgent).get();
}
catch (IOException e1)
{
System.out.println("Couldn't connect to " + Url + " , localhost was detected.");
e1.printStackTrace();
System.exit(-1);
}
catch (java.lang.IllegalArgumentException error)
{
System.out.println("Malformed URL detected -> " + Url) ;
}
}
else
{
System.out.println("Couldn't connect to " + Url);
e.printStackTrace();
}
}
catch (java.lang.IllegalArgumentException error)
{
System.out.println("Malformed URL detected -> " + Url);
}
catch (java.net.SocketTimeoutException error) //IDE Is blocking this
{
//Handle error here
}
错误是什么?
我想为不同的错误提供特定的调试输出,这样我就可以保持代码的清洁和高效。
这是我的代码(是的,缺少一些变量,但它们非常简单,但并非真的有必要):
<script>
$(document).on("click", '.class', function(event) {
alert("a new event binded!");
});
</script>
是否可以这样做?
答案 0 :(得分:2)
在SocketTimeoutException
的捕获之前放置IOException
的捕获。
异常处理通过查看表直到找到匹配的异常类型来工作。因此,更具体的例外必须在更一般的例外之前,以便它们可以匹配。
JLS Sec 14.21,&#34;无法访问的语句&#34;中描述了这一点:
如果由于无法访问语句而无法执行该语句,则为编译时错误。
...
如果满足以下两个条件,则可以访问catch块
C
:
- ...
- 在try语句中没有先前的catch块,因此C&#39的参数类型与A&#39; s参数类型的子类相同。
因此,您只需要确保没有早期的catch块捕获超类参数。