首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

初学者关于python错误的有关问题

2013-06-26 
菜鸟求助关于python异常的问题1. 一般情况下业务的错误,比较常规的做法是丢异常好呢,还是返错好?希望能点

菜鸟求助关于python异常的问题
1. 一般情况下业务的错误,比较常规的做法是丢异常好呢,还是返错好?希望能点稍微详细的说明。(从正规项目开发的角度)

这里指的业务错误比如下面这个:

def trans_login(name, password):
    u = db.GetUser(name)
    if u:
        if u.checkPass(password):
            u.setStatus(S_LOGIN)
            return True
        else:
            raise ServiceException, "Password Error!"
    else:
        raise ServiceException, "User is not Existed!"


2. 我一般会用if __name__ == '__main__': 给模块加个测试用例,就是用assert()判断函数执行,
在不用返回码,丢异常的情况下,测试用例如何写。
[解决办法]
1. 第一种情况绝对应该“return False”。第二种情况(user is not existed)有点模糊,我会选“return False”。

2. 这样:


try:
   this_Function_Need_to_Raise_Exception()
   assert(False, "An exception should have been raised")
except ExpectedException:
   assert(True, "I've been waiting for you, ex")
except Exception:
   assert(False, "No, not you.")

[解决办法]
这个跟返回值没关系吧
关键是这个异常是否可以解决,或者说你希望异常在哪个层面上解决
像java里的异常
调用时遵循严格的异常接口声明,意思是调用者必须清晰明了该函数可能抛出异常,你这个地方如果仅仅用True和False来标识,是否太单薄了些
   个人建议,如果上层不想处理异常了,这个地方返回值类型可以再丰富些,比如-1代表啥,-2代表啥,0代表成功等

热点排行