Hal*_*own 3 java coding-style exception-handling
对于以下情况,是否有规范的最佳方法?
我有一个代码块,可以生成许多不同的异常,每个异常都通过隐藏对话框,显示错误消息和运行onDisconnect()方法来处理.问题在于,对于每个异常,错误消息都需要不同.我认为,有两种选择.第一个是捕获Exception,然后使用catch块处理各种异常instanceof,如下所示:
} catch (Exception e) {
dialog.dismiss();
String errorMessage = getString(R.string.default_error);
if (e instanceof ArrayIndexOutOfBoundsException)
errorMessage = getString(R.string.bad_host);
else if (e instanceof UnknownHostException)
errorMessage = getString(R.string.unknown_host);
else if (e instanceof NumberFormatException)
errorMessage = getString(R.string.bad_port);
else if (e instanceof IOException)
errorMessage = getString(R.string.no_connection);
showError(errorMessage);
onDisconnect();
}
Run Code Online (Sandbox Code Playgroud)
另一个选择是分别捕获所有这些,如下所示:
} catch (ArrayIndexOutOfBoundsException e) {
dialog.dismiss();
showError(getString(R.string.bad_host));
onDisconnect();
} catch (UnknownHostException e)
dialog.dismiss();
showError(getString(R.string.unknown_host));
onDisconnect();
} // ...etc.
Run Code Online (Sandbox Code Playgroud)
有没有一种首选的方法呢?我选择了第一种情况下(至少目前如此),因为它最大限度地减少重复的代码,但我也听说过这instanceof和catch (Exception)是撒旦的作品.
我的偏好是有一个像这样的单独方法:
void handleException(String msg) {
dialog.dismiss();
showError(getString(msg));
onDisconnect();
}
Run Code Online (Sandbox Code Playgroud)
然后在你的代码中抛出异常就像这样:
} catch (ArrayIndexOutOfBoundsException e) {
handleException(getString(R.string.bad_host));
} catch (UnknownHostException e)
handleException(getString(R.string.unknown_host));
} // ...etc.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3949 次 |
| 最近记录: |