python视频笔记14(错误处理)

异常处理:

eg:当程序遇到问题得时候不让程序结束,而越过错误继续向下执行

	try:
		print(3 / 0)
	except   错误码   as e 
		print("除数为0了")
	print("1231")

错误处理得语句:

try:
	语句t # 运行别得代码
except 错误码 as e:
	语句1 
···
except 错误码 as e:
	语句n
else:
	语句e

注意:else 可有可无
逻辑:当程序执行到 try-except-else 语句时
1:如果当try语句t执行出现错误,会匹配第一个错误码,如果匹配上就执行对应的语句
2:如果当try语句t执行出现错误,当时没有匹配的异常,错误将会被提交到上一层的try语句
或者到程序的最上层
3:如果当try语句t执行没有出现错误,执行else语句下的e(你的有)

作用:用来检测try语句中的错误,从而让except来捕获并处理
错误码:

BaseException			所有异常的基类
SystemExit			解释器请求退出
KeyboardInterrupt		用户中断执行(通常是输入^C)
Exception			常规错误的基类
StopIteration			迭代器没有更多的值
GeneratorExit	生成器		(generator)发生异常来通知退出
StandardError			所有的内建标准异常的基类
ArithmeticError		所有数值计算错误的基类
FloatingPointError		浮点计算错误
OverflowError			数值运算超出最大限制
ZeroDivisionError		除(或取模)零 (所有数据类型)
AssertionError		断言语句失败
AttributeError		对象没有这个属性
EOFError			没有内建输入,到达EOF 标记
EnvironmentError		操作系统错误的基类
IOError			输入/输出操作失败
OSError			操作系统错误
WindowsError			系统调用失败
ImportError			导入模块/对象失败
LookupError			无效数据查询的基类
IndexError			序列中没有此索引(index)
KeyError			映射中没有这个键
MemoryError			内存溢出错误(对于Python 解释器不是致命的)
NameError			未声明/初始化对象 (没有属性)
UnboundLocalError		访问未初始化的本地变量
ReferenceError		弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError			一般的运行时错误
NotImplementedError		尚未实现的方法
SyntaxError			Python 语法错误
IndentationError		缩进错误
TabError			Tab 和空格混用
SystemError			一般的解释器系统错误
TypeError			对类型无效的操作
ValueError			传入无效的参数
UnicodeError			Unicode 相关的错误
UnicodeDecodeError		Unicode 解码时的错误
UnicodeEncodeError		Unicode 编码时错误
UnicodeTranslateError	Unicode 转换时错误
Warning			警告的基类
PendingDeprecationWarning	关于被弃用的特征的警告
FutureWarning			关于构造将来语义会有改变的警告
OverflowWarning		旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning	关于特性将会被废弃的警告
RuntimeWarning		可疑的运行时行为(runtime behavior)的警告
SyntaxWarning			可疑的语法的警告
UserWarning			用户代码生成的警告

一般使用except而不使用任何的错误类型

try:
	print (4 / 0)
except:
	print ("程序出现异常")

使用一个except带着多种异常

try:
	pass
except(NameError,ZeroDivisionError):
	print("出现了NameError 或 ZeroDivisionError")

异常都是一个类
python中的错误就是class(类),所有的错误都继承自BaseException 所以,再捕获的时候,它捕获了该类型的错误
还把子类一网打尽

跨越多层调用:

def function(num):
	print (1 / num)
def function2(num):
	function(num)
def main():
	function2(0)
try:
	main()
Except ZeroDivisionError as e:
	print("除数为0了")

try—except—finally

作用:try-finally 语句无论是否发生异常都将执行最后的代码。
格式:

try:
	<语句>
except  错误码 ad e:
	<语句>
finally:
	<语句>    #退出try时总会执行

eg:

try:
	print (1 / 0 )
except ZeroDivisionError as e:
	print ("0 了")
finally:
	print ("执行我")

断言:

def function(num, div):
	assert (div !=0)
	return num / div
print (function(10 , 0))

猜你喜欢

转载自blog.csdn.net/qq_43377292/article/details/89467604