- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的服务层中,我有一种将用户登录到系统的方法。此方法接收 3 个参数:字符串用户名
、字符串密码
、int roleId
。
我需要在我的服务层中执行多项检查:
username
参数的用户。 密码
参数匹配。 roleId
参数的角色。 roleId
参数访问角色。 如果这些检查中的任何一个失败,那么服务层应该告诉 Controller 登录失败以及失败的原因。
如果所有这些检查都通过,那么服务层应该告诉 Controller 登录已通过。
我担心的是,如果检查失败,我如何将其从服务层传递到 Controller 。我应该抛出异常吗?或者我应该发送错误代码?
我想我有以下选择:
每当检查失败时抛出异常。所以我的服务方法可能是:
public void login(String username, String password, int roleId) throws UserServiceException;
这可能是逻辑:
boolean check1Flag = isUserExist(username);
if (!check1Flag) {
throw new UserServiceException("No user exist with username '" + username + "'");
}
...
每当检查失败时发送错误代码。如果所有这些检查都通过,则发送 0 作为代码。所以我的服务方法可能是:
public int login(String username, String password, int roleId) throws UserServiceException;
这可能是逻辑:
boolean check1Flag = isUserExist(username);
if (!check1Flag) {
return -1; // -1 means No user exist with username paramter
}
...
每当检查失败时发送false
。如果所有这些检查都通过,则发送 true
。所以我的服务方法可能是:
public boolean login(String username, String password, int roleId) throws UserServiceException;
这可能是逻辑:
boolean check1Flag = isUserExist(username);
if (!check1Flag) {
return false;
}
...
选项 3 看起来很干净,但我不知道如何通知 Controller 在这种情况下发生了哪个错误。
还有其他选择吗?对于这种情况有没有普遍接受的设计指南?
谢谢
最佳答案
我认为这取决于你是否需要 Controller 中的信息。
例如,如果它是某种网站,并且登录 Controller 只会向用户显示“登录失败”屏幕,那么我会选择选项 3 。如果您愿意,您还可以在服务层中记录错误。
如果您需要登录 Controller 针对不同的错误采取不同的行为。例如,如果说“您没有该角色”或“您的帐户已锁定”,那么我会选择选项 2。也许您可以制作一个响应枚举或类似的东西来代替整数以使代码清晰。
我不会选择选项 1,因为我不喜欢使用异常来处理常见场景。另外,由于您想知道 Controller 中发生了什么,因此您需要在异常中添加一些整数或枚举代码,或者解析异常消息。
关于java - 错误代码或异常 : How to communicate errors from model to controller in my case?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29478502/
我有兴趣了解有关 Microsoft Office Communicator 的更多信息IM 客户端,以及它如何确定您的存在(即您是在计算机旁还是不在)。任何人都可以向我指出解释这一点的教程或 API
我正在使用 python。我正在尝试运行一个进程并使用 subprocess.popen 获取输出。阅读周围后,我看到人们使用 communicate()[0] 但那不在文档中,它用于示例。我想知道是
我正在使用 python。我正在尝试运行一个进程并使用 subprocess.popen 获取输出。阅读周围后,我看到人们使用 communicate()[0] 但那不在文档中,它用于示例。我想知道是
我有一些设置和拆卸脚本,它们使用 csrun.exe 为一些自动化测试准备本地计算模拟器。 C:\Program Files\Microsoft SDKs\Azure\Emulator\csrun.e
我想知道对这句名言最接地气的解释是什么: Don't communicate by sharing memory; share memory by communicating. (R. Pike) 在
(所以 this question has been asked before ,但在一般意义上,大多数响应都是在与多个服务器/客户端/等的一般网络通信的上下文中) 在简单的点对点通信协议(proto
我正在尽力将 C++ 模块链接到 python 绑定(bind)。我正在努力实现 boost mpi 通信。我正在将 boost.mpi.world 对象发送到 C++,它需要一个 boost::mp
情况是这样的: 我有一个正在运行的命令: import subprocess foo = subprocess.Popen('ls /', shell=True, stdout=subprocess.
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 2年前关闭。 Improve t
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 5 年前。 Improve
我曾与那些与同龄人在线聊天的人一起工作,他们不断地围绕想法进行讨论。我也曾与那些坚决拒绝并认为这是浪费时间的人一起工作。 在线实时聊天论坛对您特别有用吗?为什么或者为什么不? 在您的公司内部,还是在外
我在一个分为两组的 IT 部门工作。一组开发和管理应用程序,另一组管理公司的基础设施和服务器。我们面临的问题之一是沟通中断。我为应用程序组工作,我遇到的问题之一是当基础设施关闭服务器或刷新数据库时没有
我的团队与 IM 进行了很多交流。我们有时甚至会使用 IM 向在下一个立方体中的人提问。这样做的原因是我们都发现接听 IM 的干扰比说话要少得多。 尽管如此,我发现当我低头编码时,闪烁的消息窗口可能会
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 3年前关闭。 Improve t
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
传输数据时,汉明码显然允许您重新创建已通过线路损坏的数据(纠错码)。 这是如何工作的,它的局限性是什么(如果有的话)? 有没有更好的纠错解决方案(相对于重传)?是否存在重传更好的情况? 最佳答案 让我
我是一名优秀的程序员,十分优秀!