请教python编码风格和异常处理问题
天蓬老师
天蓬老师 2017-04-18 10:27:17
[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 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
    
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
PHP中文网

既然是web应用,你应该把这些验证抽象出来,自己写验证模块或者用别人的验证模块

巴扎黑

为什么不朴素的返回一个True or False呢,异常一般是指程序出现了错误,但注册信息不合法并不带表程序出了错,所以用条件判断返回真假值就可以了。
另外一般来说表单的合法判断在前端处理比较好。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号