异常
已经在以前的代码中看到了异常。由于错误的代码或输入,出错时会发生。当发生异常时,程序立即停止。
下面的代码通过尝试将7除以0来生成ZeroDivisionError 异常。
num1 = 7
num2 = 0
print(num1/num2)
结果是:
ZeroDivisionError: division by zero
英文意思:
除以0错误
division 除
by 通过
zero 零
Error错误
什么是异常?
A函数
B由于错误的代码或输入而发生的事件。
C变量
异常
由于不同的原因,输出了不同的例外。
常见例外: ImportError:导入失败; IndexError:一个列表用一个超出范围的数字索引;
NameError:使用未知变量;
SyTraceError:无法正确解析代码;
TypeError:在不适当类型的值上调用函数;
ValueError:函数被调用在正确类型的值上,但具有不适当的值。
Python有几个其他内置异常,例如ZooDistVistIOrror和OsCurror。第三方库也经常定义它们自己的异常。
这个代码引发了什么异常?
print(“7”+ 4)
ATypeError
BValueError
CZeroDivisionError
异常处理
要处理异常,并在发生异常时调用代码,则可以使用“try/except ”语句。 尝试块包含可能引发异常的代码。如果发生异常,则尝试执行块中的代码,并运行除块中的代码。如果没有发生错误,除块中的代码不会运行。
例如:
try:
num1 = 7
num2 = 0
print (num1 / num2)
print("计算完毕")
except ZeroDivisionError:
print("发生了一个错误")
print("一个除以0的错误")
结果:
>>>
发生了一个错误
一个除以0的错误
>>>
在上面的代码中,定义了要处理的异常类型
这个代码的输出结果是什么?
try:
meaning = 42
print(meaning / 0)
print("the meaning of life")
except (ValueError, TypeError):
print("ValueError or TypeError occurred")
except ZeroDivisionError:
print("Divided by zero")
ADivided by zero ValueError or TypeError occurred
BValueError or TypeError occurred
CDivided by zero
异常处理
尝试语句可以有多个不同的块,以处理不同的异常。
也可以使用括号将多个异常放入一个单独的块中,使除块处理所有的异常。
try:
variable = 10
print(variable + "hello")
print(variable / 2)
except ZeroDivisionError:
print("Divided by zero")
except (ValueError, TypeError):
print("Error occurred")
结果:
>>>
Error occurred
>>>
在空白处处理所有可能的异常情况。
num1 = input(":")
num2 = input(":")
print(float(num1)/float(num2))
print("Invalid input")
异常处理
指定的例外语句将捕获所有错误。这些方法应谨慎使用,因为它们可以捕捉意外错误并隐藏编程错误。
例如:
try:
word = "spam"
print(word / 0)
except:
print("发生了一个错误")
结果:
>>>
发生了一个错误
>>>
异常处理在处理用户输入时特别有用。
这段代码的输出结果是:
try:
print(1)
except:
print(2)
finally:
print(3)
A1
B1 2 3
C1 3
D3