2

我有一个请求一个人的函数,返回这个人的 ID。但是,如果方法检测到错误,我想返回错误(带有描述?)。

所以,假设我的功能是:

 public int GetPersonId(string username)
 {
     //Logic
     return personId;
 }

在逻辑中,我调用一个 proc,并返回一个 ID。但是,如果没有返回任何结果,我可以返回 -1,并在调用代码中处理它——但觉得这样不好。

创建一个异常并尝试/捕获它会更好,还是什么?我确定我读过一次,为业务类型规则抛出异常并不是一个好习惯。

处理这个问题的最佳方法是什么。

此外,proc 可能会返回其他状态,例如“人存在,但被标记为已删除”、“不存在这样的人”等。我的意思是有多个“异常”。

4

4 回答 4

1

我能想到2个选项

  1. 在函数内抛出异常

    throw new Exception("Some Message");

  2. 更改返回类型。而不是 int 返回 int?。如果有错误返回nullelse 值。

于 2012-07-12T00:51:17.700 回答
0

是的,您可以通过继承 Exception 类来创建自己的 Exception,或者也可以这样 throw new Exception("Error in Person.GetPersonId");

如果这是您想用消息报告的唯一地方,请使用我上面显示的内联代码,但如果您经常需要它并希望为不同类型自定义异常,那么请创建您自己的异常作为良好实践

于 2012-07-12T00:51:58.510 回答
0

我认为您需要非常清楚地区分您的功能中哪些是错误,哪些不是。如果没有找到结果是一个错误(只有你可以定义它是否是),然后抛出一个异常。如果不是错误(因为可能是输出),则返回代码或任何您想要的。调用代码应该管理它。但是不要使用异常处理来处理程序的逻辑。这是不正确的

于 2012-07-12T00:54:15.610 回答
0

1.如果您想返回一些消息,您可以将返回类型更改为字符串。您将在 Calling proc 中处理字符串类型。2.你可以用消息抛出异常,比如

throw new  Exception("what's wrong")

你可以使用 try/catch 来捕捉它!

于 2012-07-12T00:55:57.270 回答