我遇到这么一个问题,最上层方法select()执行某个业务逻辑,select()会中会调用GetValue()方法来帮助实现该业务.GetValue()方法会调用函数GetData(),GetData()会查询数据库的某个值,但是我希望如果查到数据库没有这个值,整个main的业务全部停止,弹出一个提示框即可。请问下,如何从某个子函数来结束上层的业务。main()
{
       //这里是其他业务语句
       select();
       //这里其他业务语句
}select()
{
//这里是其他业务语句
       GetValue();
       //这里其他业务语句
}GetValue()
{
    getData()
}

解决方案 »

  1.   

    扔个异常出去,在最外层catch.
      

  2.   

    直接return调用。函数设计合理一点,不会出现这样的情况的,可读性下降,自己绕自己。
      

  3.   

    是的! throw exception 就是完成这个功能用的!
      

  4.   

    自己做自己的事情,不要关心别人做什么你改抛异常就抛异常呗,管上面怎么用这个异常。如果你觉着别人分不清是系统的异常还是逻辑的异常,那么了不起自己实现一个自定义异常出去。

    其实我最近接触过很多别扭的设计,ref string lasterr 蹩脚的设计啊,完全不知道异常为何物。完全扰乱正常的逻辑代码、只因为博客园的“教授”们定义了一个所谓的异常性能如何如何滴条条框框,所以打死他都坚决不用异常,打死他都坚决stringBulid,打死他都坚决不反射,打死他都坚决不EF,打死他都坚决不webform,打死都坚决认为 --i++--是世界上最优美的代码
      

  5.   


    你好,在业务层调用数据访问层时,总会出现数据访问层查不到相关数据,比如业务要查询2014年的学生信息,但是当前只是2013年,那么就应该在业务层提示年份输入有误,或者提示该年数据不存在。也就是说,函数定义者要根据其调用的子函数返回信息来判断走不同逻辑。请问这种情况下,如何设计!
    一个是将之前丢出的异常作为InnerException包装起来,再往上层丢出新的异常。
    一个是使用委托,将不同的操作的逻辑丢给上一层自己做。