我有一个请求一个人的功能,返回人员ID。但是,如果方法检测到错误,我想返回错误(带描述?)。
所以,让我说我的功能是:
public int GetPersonId(string username)
{
//Logic
return personId;
}
在逻辑中,我调用proc,并返回一个ID。但是,如果没有返回结果,我可以返回-1,并在调用代码中处理 - 但感觉这不好。
创建异常会更好吗,并尝试/捕获它,或者什么?我确信我读过一次,抛出商业类型规则的例外,并不是一种好的做法。
解决这个问题的最佳方法是什么。
此外,也许proc会返回其他状态,例如“人存在,但被标记为已删除”,“不存在此人”等。我的意思是存在多个“例外”。
答案 0 :(得分:1)
我可以想到2个选项
在函数内抛出异常
throw new Exception("Some Message");
更改退货类型。而不是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来抓住它!