加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读