如何檢查特定的例外情況,例如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是對的,他描述了正確的方式。 –