菜鸟求助关于python异常的问题

eastred 2013-05-14 10:24:38
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()判断函数执行,
在不用返回码,丢异常的情况下,测试用例如何写。
...全文
134 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
乔巴好萌 2013-05-15
  • 打赏
  • 举报
回复
这个跟返回值没关系吧 关键是这个异常是否可以解决,或者说你希望异常在哪个层面上解决 像java里的异常 调用时遵循严格的异常接口声明,意思是调用者必须清晰明了该函数可能抛出异常,你这个地方如果仅仅用True和False来标识,是否太单薄了些 个人建议,如果上层不想处理异常了,这个地方返回值类型可以再丰富些,比如-1代表啥,-2代表啥,0代表成功等
panghuhu250 2013-05-15
  • 打赏
  • 举报
回复
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.")

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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