c# - 抛出异常或返回
问题描述
我有一个函数,我的控制器正在调用它来检查帐户是否有效。
我想知道在函数中返回的最佳设计是什么。抛出异常或返回错误消息会更好吗?
选项 1,我目前正在使用
public void ValidateLocalAccount(Login dto) {
var user = _userService.GetUserByUsername(dto.username);
if (user == null)
throw new Exception("User does not exist");
if (user.accountType != AccountType.Local)
throw new Exception("Account is not local");
}
控制器:
[HttpPost("Login")]
public async Task<ActionResult> Login([FromBody] Login loginDto)
{
try
{
_accountService.ValidateLocalAccount(loginDto);
return Ok(await _accountService.GetToken(loginDto));
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
选项2,这对我来说似乎不合常规
public <bool, string> ValidateLocalAccount(Login dto) {
var user = _userService.GetUserByUsername(dto.username);
if (user == null)
return (false,"User does not exist");
if (user.accountType != AccountType.Local)
return (false,"Account is not local");
return (true,string.empty);
}
控制器:
[HttpPost("Login")]
public async Task<ActionResult> Login([FromBody] Login loginDto)
{
var res = _accountService.ValidateLocalAccount(loginDto);
if(!res.item1)
return BadRequest(res.item2)
return Ok(await _accountService.GetToken(loginDto));
}
我是否会误用选项 1 中的异常,因为我有点用它来控制流程?因此我的问题是我应该何时选择异常而不是错误代码或返回 null ?哪个选项是更好的设计?干杯。
解决方案
推荐阅读
- reactjs - 将 minified.js(react 组件)渲染到其他 React 组件中
- opencv - Opencv 4.5.3 不构建 build/x64 库
- javascript - 当我运行 npm run build 时,Webpack 显示有关 css-loader 的错误
- python - 如何使用现有列中的变量作为使用 python 的列来创建数据框?
- ref - 可以使用 Unsafe.AsPointer() 来传递您确定仍然存在的 ValueType 引用吗?
- python - 二进制 1 在 python 混乱中的恭维?
- csv - 在不使用外部包的情况下将嵌套列表转换为 CSV 文件
- ios - UINavigationController 顶部的空白区域
- r - R:是否可以优化以下功能?
- python - 如何从 xpath 中提取价格?