如何检查特定的例外情况,例如SocketException
留言"Socket closed"
?我们可以比较字符串这样的:Android:如何检查特定的异常?
if (exception.getMessage().equals("Socket closed"))...
但有一些巧妙的方法,比较喜欢的错误代码,或比较恒定的异常值?
除非SocketException
总是"Socket closed"
,但在文档中它指出这个类是所有套接字异常的超类,所以有多个。
更新: 我不想检查异常类。如果我这样做,我会用专门的catch
,而不是检查TOR一类明确:
catch (SocketException ex) { ... }
我想要一些更巧妙的方法,以不同的两个例外它们是同一个类的实例,而不是通过比较像这样的字符串:
try {
int i = 2;
if (i == 1) throw new SocketException("one");
else if (i == 2) throw new SocketException("two");
}
catch (SocketException ex) {
if (ex.getMessage().equals("one")) { ... }
}
在这种特殊情况下,我会抛出异常来显示它是什么,但实际上它可以是代码不受我控制。
另外我注意到,在一个特定的案例方法中的异常消息抛出“套接字关闭”,在另一种不同的方法抛出“套接字关闭”。所以坚持这个信息也不是很可靠。
比较异常消息是一个坏主意。此消息仅供程序员使用,并且可以在新版本的API中随时更改。所以,@Jim是对的,他描述了正确的方式。 –