我正在尝试查看抛出的异常是否包含特定的单词,如下面的代码中所示,但我的IDE表示'contains()'方法未定义为Exception类型。我该怎么办?
public static void main(String[] args) throws Exception {
try {
// blah blah
} catch (Exception z) {
if (z.contains("UnknownHostException")) {
System.out.print("Unknown Host");
}
// blah blah
}
}
我想您正在尝试检查异常消息:
z.getMessage().contains("UnknownHostException")
但一般来说,您直接指定要捕获的异常类型。像这样的东西:
try {
// some code
} catch (UnknownHostException e) {
System.out.print("Unknown Host");
} catch (Exception other) {
// other exceptions go here
}
见this,尤其是The catch Blocks。
z.getMessage().contains(...)
但是,如果您只是检查异常的类型,请不要这样做:直接捕获UnknownHostException
:
} catch (UnknownHostException z) {
为了使您不会被例外的消息混淆,例如:
I am not an UnknownHostException.
你应该很少捕获Exception
(只有当你调用的方法抛出Exception
;然后,方法应该很少抛出Exception
,除非它们是框架方法)。