recherche

Maison  >  Questions et réponses  >  le corps du texte

请教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
    
天蓬老师天蓬老师2873 Il y a quelques jours523

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 10:29:17

    Puisqu'il s'agit d'une application Web, vous devez résumer ces vérifications et écrire votre propre module de vérification ou utiliser le module de vérification de quelqu'un d'autre

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:29:17

    Pourquoi ne pas simplement renvoyer un vrai ou un faux ? Une exception signifie généralement qu'il y a une erreur dans le programme, mais les informations d'enregistrement sont illégales et il y a une erreur dans le programme de table, il suffit donc d'utiliser un jugement conditionnel pour renvoie une valeur vraie ou fausse.
    De plus, de manière générale, il est préférable de gérer le jugement juridique du formulaire dès le début.

    répondre
    0
  • Annulerrépondre