gpt4 book ai didi

java - 使用异常处理用户错误

转载 作者:行者123 更新时间:2023-12-02 05:17:13 25 4
gpt4 key购买 nike

我正在开发一个 IRC 机器人,它应该处理一些用户命令,让我们以 !login <username> <password> 为例。例如。有时用户忘记输入密码,因此不要发送 !login myUser hunter2他们可能会使用!login myUser 。在这种情况下,应该向用户回复一条错误消息。实际处理命令handleCommand的方法总是被另一种方法包装wrapperMethod 。我应该使用以下哪种方法来处理用户错误:应该 handleCommand只需向用户发送有关发生的情况的消息并自行退出,或者应该抛出带有错误消息的异常并让 wrapperMethod剩下的呢? ( String[] command 是没有 ! 的原始命令,并用空格分隔,因此 !login myUser hunter2 将变为 {"login", "myUser", "hunter2"} )

使用异常:

public void wrapperMethod(Object sender, Object receiver, String[] command) {
try {
handleCommand(sender, receiver, command);
catch(CommandExecutionException e) {
receiver.sendTo(sender, e.getMessage());
}
}

private void handleCommand(Object sender, Object receiver, String[] command) {
if(command.length != 3)
throw new CommandExecutionException("Things went wrong");
//Do things
}

不使用异常:

public void wrapperMethod(Object sender, Object receiver, String[] command) {
handleCommand(sender, receiver, command);
}
private void handleCommand(Object sender, Object receiver, String[] command)
if(command.length != 3) {
receiver.sendTo(sender, "Things went wrong");
return;
}
//Do things
}

我应该选择哪种类型以及为什么?现在,我正在考虑异常(exception),只是因为我可以节省几行我真正不需要的代码。当检测到用户错误时,handleCommand总是立即停止。还有可能拥有 handleCommand返回Optional<Error>或类似的东西,但这看起来真的很可疑。

最佳答案

我更喜欢带有异常的选项,因为它将正常处理与错误处理分开。

在第二个选项方法中,handleCommand 负责两者。

第一个选项如下 Single responsibility principle :方法 handleCommand 处理正确的流程,如果出现问题,则抛出异常并允许其他人关心问题。

此外,假设在部分内

//Do things

您发现其他错误。如果您使用异常,您可以保持一致和干净的模式,任何错误都会触发异常,并且捕获异常的人关心正确的处理。

不用担心异常的代价高昂;飞机比自行车贵,但如果您去巴厘岛度假,请使用飞机而不是自行车(不适用于巴厘岛公民:))。异常是为异常而设计的,只要你不在常规处理中使用它们,就可以了。

关于java - 使用异常处理用户错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26823296/

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