通过验证简单输入进行异常处理

时间:2017-11-03 10:20:25

标签: python validation exception-handling

在我成功学习高级Java之后,我是Python新手。 在Java中,带有异常处理的输入验证对我来说从来都不是问题,但在某种程度上在python中我有点困惑:

这是一个简单的FizzBu​​zz程序示例,它只能读取0到99之间的数字,否则,必须抛出异常:

            <div class="pull-left image">
                <img src="<?= $directoryAsset ?>/img/user2-160x160.jpg" class="img-circle" alt="User Image"/>
            </div>

如果我运行并输入例如123代码刚刚终止,没有任何反应。

2 个答案:

答案 0 :(得分:0)

如果要捕获异常,则需要确保在出现所需方案时引发异常。

由于try和except之间的代码块本身不引发异常,因此您需要自己引发一个:

try:
    if(0<= n <= 99):
        ... 
    else:
        raise Exception()
except Exception:
    ...

答案 1 :(得分:0)

当您的条件不满足时,您需要从fizzbuzz()中引发异常。请尝试以下:

if __name__ == '__main__':

def fizzbuzz(n):
    try:
        if(0<= n <= 99):
            for i in range(n):
                if i==0:
                    print("0")
                elif (i%3==0 and i%7==0) :
                    print("fizzbuzz")
                elif i%3==0:
                    print("fizz")
                elif i%7==0:
                    print("buzz")
                else:
                    print(i) 
        else:
            raise ValueError("Your exception message")
    except Exception:
        print("/// ATTENTION:The number you entered was not in between 0 and 99///")   

try:
    enteredNumber = int(input("Please enter a number in between 0 and 99: "))
    fizzbuzz(enteredNumber)
except Exception:
    print("/// ATTENTION: Something went wrong here. Next time, try to enter a valid Integer ////")

此外,您必须捕获特定的异常,而不是捕获一般异常。