请教python编码风格和异常处理问题
天蓬老师
天蓬老师 2017-04-18 10:27:17
0
2
509

请教各位个问题,编写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)
洪涛

웹 애플리케이션이므로 이러한 검증을 추상화하고 자체 검증 모듈을 작성하거나 다른 사람의 검증 모듈을 사용해야 합니다

巴扎黑

단순히 True 또는 False를 반환하면 안되는 이유는? 일반적으로 예외란 프로그램에 오류가 있다는 뜻인데, 등록정보도 불법이고 테이블 프로그램에도 오류가 있어서 조건부 판단만 하면 충분하다. 참 또는 거짓 값을 반환합니다.
또한 일반적으로 말해서 양식의 법적 판단은 프런트 엔드에서 처리하는 것이 좋습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿