考虑下面的程序。<p>
<p>方案1:</p>
<pre><code># this program would keep prompting the user for an integer input.
while True:
a=int(input("Enter integer: "))
b=int(input("Enter another integer: "))
print(a/b)
</code></pre>
<p>运行程序并保持输入。如果一切正常,它将打印两个整数的除法。现在
案例1:如果您输入一个随机字符串会怎么样?
案例2:或者如果在b变量的位置输入0呢</p>
<p>请随意测试它。你会看到,
i) 案例1引发ValueError异常
ii)案例2引发了零错误异常</p>
<p>现在,您需要处理这些异常。你怎么能做到?以下是方法:</p>
<p>方案2:</p>
<pre><code># this program handles ValueError and ZeroDivisionError exceptions
while True:
try:
a=int(input("Enter integer: "))
b=int(input("Enter another integer: "))
result=a/b
except ValueError:
print("Input is not integer.")
except ZeroDivisionError:
print("Division by 0 is not supported.")
else:
print(result)
print("\n")
</code></pre>
<p>此外,您可以像这样处理所有异常:</p>
<p>方案3:</p>
<pre><code>while True:
try:
a=int(input("Enter integer: "))
b=int(input("Enter another integer: "))
result=a/b
except Exception:
print("An error occured.")
else:
print(result)
print("\n")
</code></pre>
<p>如果出现用户定义的异常,请执行以下操作:</p>
<pre><code>class MyException(Exception):
pass
while True:
a=int(input("Enter integer: "))
b=int(input("Enter another integer: "))
if b==0:
raise MyException
print("\n")
</code></pre>
<p>以后想抓就抓</p>
<p>程序3不是一个好的实践。永远不要默默地传递错误。您可以通过子类化python的异常类来利用它</p>