python异常处理——try
1、为什么要进行异常:
当程序出现异常,不中断程序处理(将程序处理顺序,转移到提前的设定好的条件中执行)
2、异常处理写法
try:
可能会出现异常的代码
except 可能会出现的异常:
出现异常后的要怎么做
执行逻辑:
首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。
如果没有异常发生,忽略 except 子句,try 子句执行后结束。
如果在执行 try 子句的过程中发生了异常,那么 try 子句(余下的部分将被忽略)。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。
如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中
3、常见异常种类
异常 | 异常解释 |
---|---|
zeroDivisionError | 0 不能作为除数,触发异常 |
IndexError | 序列中没有此索引(index) |
KeyError | 映射中没有这个键 |
NameError | 未声明初始化对象(没有属性) |
SyntaxError | python语法错误 |
ValueError | 传入无效参数 |
TypeError | #类如int 不能与 str 相加,触发异常 |
OSError | 操作系统异常(如:文件打开异常) |
keyboardInterrupt | 键盘中断错误(如:Ctrl+c使得程序异常退出) |
SystemExit | 由sys.exit()引发(唯一一个不被认为错误的异常) |
RuntimeError | (运行时错误)程序运行到一半,程序崩溃了 |
Base Exception(Exception) | 所有异常的父类 |
4、示例
def name():
try:
print(n)
except NameError as e:
print("出现变量未定义异常")
name()
结果:
出现变量未定义异常
Process finished with exit code 0
5、常见用法
1)try同时处理多个异常
def yc2(x,y)->int:
try:
result = x/y
except (ZeroDivisionError,NameError,RuntimeError) as e:
print(f"输入异常异常类为:{e}")
yc2(1,0)
结果:
输入异常异常类为:division by zero
2)常见结构:
def yc():
f = None
try:
f = open("C:/Users/Desktop/fsdownload/1.txt","r")
except NameError as e:
print("出现变量未定义异常")
except ZeroDivisionError as e:
print("分母不能为0")
except exception as e:
print("输入异常")
finally:
if f:
print(f.read())
f.close()
yc()
结果:
"E:\python\python project\venv\Scripts\python.exe" "E:/python/python project/venv/Scripts/异常处理.py"
仰天大笑出门去,我辈岂是蓬蒿人
豫章故郡,洪都新府
落霞与孤鹜齐飞,秋水共长天一色
a、except exception as e :捕获所有异常
b、finally 最终都要执行的语句
6、异常传递
函数间相互调用时,主函数的限定适用于被调函数
def yc2(x,y)->int:
result = x/y
def main(x,y):
try:
print("这是一个除法:")
yc2(x,y)
except (ZeroDivisionError, NameError, RuntimeError) as e:
print(f"输入异常异常类为:{e}")
main(1,0)
结果:
这是一个除法:
输入异常异常类为:division by zero
原文地址:https://blog.csdn.net/qingyulee/article/details/143812340
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!