遇到这种情况该如何设计函数

chuntianqiaoqiao 2015-09-10 05:12:40
比如我们需要一个函数去获取某个值,但是可能获取失败,而失败的情况有多种。
想要同时知道执行的结果和失败的信息该怎么设计函数?
...全文
362 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
缪军 2016-01-23
  • 打赏
  • 举报
回复
我想补充一下,用默认值或者特定值表示(代替)异常的案例很多 就连异常处理本身也包含这种规则
  • 打赏
  • 举报
回复
错误信息未必是仅仅写到Exception.Message中,通常是会自定义Exception类型的。当然如果懒得写代码,也可以仅仅写Message参数。
  • 打赏
  • 举报
回复
引用 3 楼 devmiao 的回复:
最好的做法是throw丢出异常,错误信息写在exception.message里
是这样的。 失败不要当作函数的正常返回,而应该走.net的规范的异常抛出机制的路子,这样才正规,也方便针对异常而进行各种调试和处理。如果你们有人认为“失败也是业务”,那么你们就应该先反思一下,是否应该把这个叫做“失败”?正常的业务处理不要以失败(异常)作为业务控制逻辑,而应该在业务逻辑上做更多的探测和导航。把失败跟正常的业务逻辑混为一谈是容易藏污纳垢、让系统低效率运转,甚至连正常工作与带病工作都分不清的。
byronqiji 2015-11-21
  • 打赏
  • 举报
回复
将各种情况设计成枚举值,定义一个以枚举值为key 的Dictionary<myenum,string>
yangyi_2009 2015-11-16
  • 打赏
  • 举报
回复
四楼的方法最标准。

ReturnType DoSomething()
{
    if (error)
        throw new XxxException();
    else
        return xxx;
}

bool TryDoSomething(out ReturnType result)
{
    if (error)
    {
        result = default(ReturnType);
        return false;
    }
    else
     {
        result = xxx;
        return true;
    }
}
caojinrong 2015-11-14
  • 打赏
  • 举报
回复
引用 3 楼 devmiao 的回复:
最好的做法是throw丢出异常,错误信息写在exception.message里
正解
  • 打赏
  • 举报
回复
多个catch 由小到大顺序 捕捉
缪军 2015-09-12
  • 打赏
  • 举报
回复
对异常的处理规则分两种模式,一般来说需要同时提供, 比如可以参考微软的: TryParse和Parse函数 FirstOrDefault和First函数
devmiao 2015-09-11
  • 打赏
  • 举报
回复
最好的做法是throw丢出异常,错误信息写在exception.message里
  • 打赏
  • 举报
回复
public string Get(ref string errMsg) { errMsg = "no error"; return "我是某个值"; }
  • 打赏
  • 举报
回复
设计一个类,该类至少包含两个属性,一个是结果标志位,一个是说明信息

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧