首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >抛出异常或返回

抛出异常或返回
EN

Stack Overflow用户
提问于 2019-03-10 12:48:17
回答 2查看 103关注 0票数 0

我有一个函数,我的控制器正在调用这个函数来检查一个帐户是否有效。

我在想,在这个功能中,最好的设计是什么?最好是抛出一个异常还是返回一条错误消息?

选项1,我目前正在使用

代码语言:javascript
运行
复制
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");
}

主计长:

代码语言:javascript
运行
复制
[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,这在我看来是不传统的。

代码语言:javascript
运行
复制
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);
}

主计长:

代码语言:javascript
运行
复制
[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?哪一种设计更好?干杯。

EN

Stack Overflow用户

发布于 2019-03-10 13:04:00

最佳实践是返回正确的状态代码,如404 (未找到)、401 (未经授权)或500 (内部服务器错误)。

查看HTTP代码的列表

在编写API的情况下,返回状态代码是最好的做法,但是如果您正在编写像剃刀页面这样的web应用程序,那么最好返回错误消息,而不是例外。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55087836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档