在Java中以类似方式处理多个异常的最佳实践
发布时间:2020-12-15 04:54:30 所属栏目:Java 来源:网络整理
导读:对于以下情况,是否有规范的最佳方法? 我有一个代码块可以生成许多不同的异常,每个异常都通过隐藏对话框,显示错误消息和运行onDisconnect()方法来处理.问题在于,对于每个异常,错误消息都需要不同.我认为,有两种选择.第一个是捕获Exception,然后使用instanceo
对于以下情况,是否有规范的最佳方法?
我有一个代码块可以生成许多不同的异常,每个异常都通过隐藏对话框,显示错误消息和运行onDisconnect()方法来处理.问题在于,对于每个异常,错误消息都需要不同.我认为,有两种选择.第一个是捕获Exception,然后使用instanceof处理catch块内的各种异常,如下所示: } 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(); } 另一个选择是分别捕获所有这些,如下所示: } 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. 有没有一种首选的方法呢?我选择了第一个案例(至少目前为止),因为它最大限度地减少了重复的代码,但我也听说过instanceof和catch(Exception)是撒旦的作品. 解决方法
我的偏好是有一个像这样的单独方法:
void handleException(String msg) { dialog.dismiss(); showError(getString(msg)); onDisconnect(); } 然后在你的代码中抛出异常就像这样: } catch (ArrayIndexOutOfBoundsException e) { handleException(getString(R.string.bad_host)); } catch (UnknownHostException e) handleException(getString(R.string.unknown_host)); } // ...etc. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |