请教python编码风格和异常处理问题
问题描述
请教各位个问题,编写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 Nonedef 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
问题解答
回答1:既然是web应用,你应该把这些验证抽象出来,自己写验证模块或者用别人的验证模块
回答2:为什么不朴素的返回一个True or False呢,异常一般是指程序出现了错误,但注册信息不合法并不带表程序出了错,所以用条件判断返回真假值就可以了。另外一般来说表单的合法判断在前端处理比较好。
相关文章:
1. apache - 本地搭建wordpress权限问题2. docker 下面创建的IMAGE 他们的 ID 一样?这个是怎么回事????3. css3 - transition属性当鼠标一开的时候设置的时间不起作用4. 热切期待朱老师的回复,网页视频在线播放器插件配置错误5. macos - mac下docker如何设置代理6. Android下,rxJava+retrofit 并发上传文件和串行上传文件的效率为什么差不多?7. angular.js - ng-grid 和tabset一起用时,grid width默认特别小8. javascript - web网页版app返回上一页按钮在ios设备失效怎么办?安卓上可以,代码如下,请大神帮助,万分感谢。9. Whitelabel错误页面发生意外错误(类型=未找到,状态= 404)/WEB-INF/views/home.jsp10. java - Spring Mvc全局异常处理器@ControllerAdvice不起作用?
