7. 异常处理

异常分别位除零错误(ZeroDivisionError)、命名错误(NameError))、类型错误(TypeError)

1、异常处理

>>> while True:
... try:
... 	x = int(input("Please enter a number: "))
... 	break
... except ValueError:
... 	print("Oops! That was no valid number. Try again...")
...

# 一个except 子句可以在括号中列出多个异常的名字
... except (RuntimeError, TypeError, NameError):
... 	pass

注意:如果发生了一个异常,在except 子句中没有与之匹配的分支,它就会传递到上一级try 语句中。如果最终仍找不到对应的处理语句,它就成为一个未处理异常,终止程序运行,显示提示信息。

import sys
try:
	f = open(’myfile.txt’)
	s = f.readline()
	i = int(s.strip())
except IOError as err:
	print("I/O error: {0}".format(err))
except ValueError:
	print("Could not convert data to an integer.")
# 通配符
except:
	print("Unexpected error:", sys.exc_info()[0])
	raise

最后一个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 ... except 语句可以带有一个else子句,该子句只能出现在所有except 子句之后。当try 语句没有抛出异常时,需要执行一些代码,可以使用这个子句。

未看完,用户自定义异常

原文地址:https://www.cnblogs.com/BigMario/p/13577566.html