请教各位个问题,编写web应用注册模块,如下面这段代码,服务端需要检测用户的传递的参数。下面几种写法哪个更好,异常处理方式是否正确,或者各位是否有更好的方式呢
def check_args(account, passwd, birthday, name): # 第一种写法 if account == '' or not isinstance(account, str): raise ValueError if passwd == '' or not isinstance(passwd, str): raise ValueError if birthday == '' or not isinstance(birthday, str): raise ValueError if name == '' or not isinstance(name, str): raise ValueError # 第二种写法 if (account == '' or not isinstance(account, str)) \ or (passwd == '' or not isinstance(passwd, str)) \ or (birthday == '' or not isinstance(birthday, str)) \ or (name == '' or not isinstance(name, str)): raise ValueError return None def user_register(form): account = form["account"] passwd = form["passwd"] birthday = form["birthday"] name = form["name"] # 异常放在这一层,但在main函数调用 user_register 如何检测是否成功呢 # 是当前异常继续向外抛,还是通过返回值 try: check_args(account, passwd, birthday, name) insertUserInfo(account, passwd, birthday, name) except ValueError: pass except MySQLError: pass except Exception: pass
为什么不朴素的返回一个True or False呢,异常一般是指程序出现了错误,但注册信息不合法并不带表程序出了错,所以用条件判断返回真假值就可以了。
另外一般来说表单的合法判断在前端处理比较好。
既然是web应用,你应该把这些验证抽象出来,自己写验证模块或者用别人的验证模块