从函数返回值

时间:2012-07-12 00:46:15

标签: c# exception-handling

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

所以,让我说我的功能是:

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

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

创建异常会更好吗,并尝试/捕获它,或者什么?我确信我读过一次,抛出商业类型规则的例外,并不是一种好的做法。

解决这个问题的最佳方法是什么。

此外,也许proc会返回其他状态,例如“人存在,但被标记为已删除”,“不存在此人”等。我的意思是存在多个“例外”。

4 个答案:

答案 0 :(得分:1)

我可以想到2个选项

  1. 在函数内抛出异常

    throw new Exception("Some Message");

  2. 更改退货类型。而不是int返回int?。如果错误返回null其他值。

答案 1 :(得分:0)

是的,你可以通过继承Exception类来创建自己的Exception,或者也可以这样做throw new Exception("Error in Person.GetPersonId");只要你抓住它们并将它们登录到错误记录器就可以了,但是你应该看到这个消息无论哪种方式

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

1.如果要返回某些消息,可以将返回类型更改为字符串。你将在Calling proc中处理字符串类型。 你可以通过消息抛出异常,比如

throw new  Exception("what's wrong")

你可以用try / catch来抓住它!