>  Q&A  >  본문

请教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
    
天蓬老师天蓬老师2741일 전470

모든 응답(2)나는 대답할 것이다

  • PHP中文网

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

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

    회신하다
    0
  • 巴扎黑

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

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

    회신하다
    0
  • 취소회신하다