错误和异常
try/execpt
try:
y = 10 / 0
except:
print("执行异常")
如果一个异常没有任何 except
匹配,那么这个异常就会传递给上层 try
中。
一个 try 可以包含多个 except 子句,分别来处理不同的特定的异常。
import sys
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except OSError as err:
print("OS error: {0}".format(err))
except ValueError:
print("Could not convert data to an integer.")
except:
print("Unexpected error:", sys.exc_info()[0])
raise
try/except...else
try/except
语句还有一个可选的 else 子句,如果使用这个子句,必须放在所有 except 子句的后面。
for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print('cannot open', arg)
else:
print(arg, 'has', len(f.readlines()), 'lines')
f.close()

try-finally

抛出异常

raise [Exception [, args [, traceback]]]
x = 10
if x > 5:
raise Exception('x 不能大于 5。x 的值为: {}'.format(x))
自定义异常
# 异常类继承自 Exception 类
class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
try:
raise MyError(2*2)
except MyError as e:
print('My exception occurred, value:', e.value)
raise MyError('oops!')
Last updated