请教各位个问题,编写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
これは Web アプリケーションであるため、これらの検証を抽象化し、独自の検証モジュールを作成するか、他の人の検証モジュールを使用する必要があります
単純に True か False を返さないのはなぜですか? 例外は通常プログラムにエラーがあることを意味しますが、登録情報が不正でテーブル プログラムにエラーがあるため、条件判断を使用して を返せば十分です。 true または false の値。
また、一般的に言えば、フォームの法的判断はフロントエンドで処理する方が良いでしょう。