gpt4 book ai didi

java - 在 Java 中以类似方式处理多个异常的最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:36:02 24 4
gpt4 key购买 nike

对于以下情况是否有规范的最佳方法?

我有一段代码可以生成许多不同的异常,每个异常都是通过隐藏对话框、显示错误消息和运行 onDisconnect() 方法来处理的。要注意的是,对于每个异常,错误消息都需要不同。在我看来,有两种选择。首先是捕获 Exception,然后使用 instanceof 处理 catch block 内的各种异常,如下所示:

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

有没有更好的方法来做到这一点?我选择了第一种情况(至少现在是这样),因为它最大限度地减少了重复代码,但我也听说 instanceofcatch (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.

关于java - 在 Java 中以类似方式处理多个异常的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5519597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com