【发布时间】:2011-05-31 16:25:16
【问题描述】:
我有一个实例方法,在里面我做了一个简单的网页解析:
public void doOperation(final AuthorAccess authorAccess, ArgumentsMap arguments) throws IllegalArgumentException,AuthorOperationException
{
final String server = "chiexist1.worldbook.com";
final String port = "8080";
try {
docBuilder = docFactory.newDocumentBuilder();
doc = docBuilder.parse("http://" + server + ":" + port + "/exist/webdav/db/portfolio/config/products.xml");
...}
catch{}
}
因为目前我在字符串中硬编码服务器地址,可能会出现服务器名称不正确的情况,所以在这种情况下,我希望它自动将服务器 URL 字符串更改为“localhost”。
我认为 if-else 语句可能会起作用,但我不太确定如何确定用于检测此解析是否失败的布尔变量。我也想把这个放在catch语句中,但是其他语句也抛出异常呢?
我还检查了 DocumentBuilder 的 API,parse() 方法总是返回一个文档类型而不是布尔值。所以如果有人能在这里给我一些关于如何检测错误的 URL 然后改为解析 localhost 的建议,我将不胜感激,在此先感谢。
【问题讨论】:
-
我猜如果 URL 无效,它会返回一个 IOException,但可能还有许多其他原因会引发一个 IOException。顺便问一下,您说的“服务器名称不对”,您的意思能更准确吗?
-
@Gregs 这基本上意味着我正在访问一些我无权访问的其他公司服务器,所以我被屏蔽了。但是,本地主机将始终有效。
-
感谢您的信息。顺便说一句,我看到我写的是“返回一个 IOException”而不是“抛出一个 IOException”。我很快就会去鞭刑室报告。
-
@Gregs:我之前认为应该是 IOException,但实际上在我的代码中,只有 SAXException 才能正确捕获异常。
标签: java