gpt4 book ai didi

java - 服务层中的 IllegalArgumentException?

转载 作者:行者123 更新时间:2023-11-30 09:36:35 25 4
gpt4 key购买 nike

据我了解,IllegalArgumentException 旨在传达编程错误。

如果我正在编写一个基本上通过网络服务接受用户输入的服务层,如果网络服务正在传递客户端提供的非法参数,那么 IllegalArgumentException NOT 是合适的,因为这不是真正的编程错误?创建我自己的服务级别异常会更好吗?

最佳答案

是的,应该使用 RuntimeException(以及扩展为 IllegalArgumentException)来明确发生编程错误或其他一些意外或不正确的操作.它应该发送已发现错误的警报,应该通过测试来纠正和验证错误。

但是根据您的设计分配职责的方式,服务层抛出 IllegalArgumentException 可能是完全合理的。从用例的角度来看,无论何时处理用户输入,您几乎都必须预料到无效值并优雅地处理它们。它只是通过用例的替代路径,并且是绝对会发生的事情,所以不是真正的错误。

但是处理无效的用户输入通常是用户界面的责任,因此网页应该优雅地处理错误的输入并给用户一个机会进行更正(在尝试登录时输入错误的密码) , 例如)。但由于这是预料之中的,所以它并不是真正的异常(exception)。关键是如果用户界面在发送请求之前能够确保有效性,则不应向服务器发送无效请求。如果这在用户界面中可行,则服务层抛出 IllegalArgumentException 是有意义的。

回到用户登录示例,用户界面只能确保输入的数据格式正确;它完全无法保证这些值实际上是正确的。因此,用户界面必须将正确格式化的输入发送到服务层。在这种情况下,我不会从服务层抛出异常,因为格式正确但值不正确是预料之中的事情。在这种情况下,如果用户界面发送的值格式不正确,我会抛出异常,但如果值只是不正确则不会。在第二种情况下,我会回复用户界面说值不正确,但我不会抛出异常。

希望这个很长的回答对您有帮助-

关于java - 服务层中的 IllegalArgumentException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10693045/

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