注:本博客实例均是使用的Python编译器--pycharm
抛出异常
Error(错误)是系统中的错误,程序员是不能改变的和处理的,如系统崩溃,内存空 间不足,方法调用栈溢等。遇到这样的错误,建议让程序终止。 Exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常, 应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
常见的异常:AttributeError 、IOError 、ImportError 、IndexError、SyntaxError、TypeError、ValueError、KeyError、NameError
#代码
class FooError(ValueError):
pass
def foo(s):
n = int(s)
if n==0:
raise FooError('invalid value: %s' % s)
return 10 / n
foo('0')
#运行结果
Traceback (most recent call last):
File "C:/Users/……/test.py", line 8, in <module>
foo('0')
File "C:/Users/……/test.py", line 6, in foo
raise FooError('invalid value: %s' % s)
__main__.FooError: invalid value: 0
异常处理
所谓异常处理代码就是try......excepct......else......finally语句
例如:
#代码
try:
print('try...')
r = 10 / 0
print('result:', r)
except ZeroDivisionError as e:
print('except:', e)
finally:
print('finally...')
print('END')
#输出
try...
except: division by zero
finally...
END
触发异常
Python 允许程序自行引发异常,自行引发异常使用 raise 语句来完成,格式如下:
raise [Exception [, args [, traceback]]]
Exception 是异常的类型(例如,NameError)参数标准异常中任一种, args 是自已提供的异常参数。
#代码
age = int(input("年龄:"))
if age < 0 or age >= 120:
raise NameError("年龄必须在0<age<120")
#运行结果
年龄:134
Traceback (most recent call last):
File "C:/Users/……/test.py", line 3, in <module>
raise NameError("年龄必须在0<age<120")
NameError: 年龄必须在0<age<120
自定义异常
用户自定义异常都应该继承 Exception 基类或 Exception 的子类,在自定义异常类时基 本不需要书写更多的代码,只要指定自定义异常类的父类即可。
#代码
age = 134
if 0 < age < 120:
print('age legal')
else:
raise ValueError('age error')
#运行结果
Traceback (most recent call last):
File "C:/Users/……/test.py", line 5, in <module>
raise ValueError('age error')
ValueError: age error
|