【Python】异常处理结构

在运行代码时,总是遇到各种异常,且出现异常时,脚本就会自动的的停止运行,那我们该如何处理异常呢?

1.python异常

在这里插入图片描述
可以看到调用a方法时:想要输出两个内容,但是因为第一个print(2/0)报错,导致下面的内容也被停止执行,有没有可以指出报错地方的同时还可以执行下面的代码

2.try_except异常处理结构

try:
	可能报错的语句执行体
except (报错异常名称):
	报错异常的语句执行体

try块包含着可能引发异常的代码,except块则用来捕捉和处理发生的异常。执行的时候,如果 try块中没有引发异常,则跳过ecept块继续执行后续代码;执行的时候,如果try块中发生了异常,则跳过 try块中的后续代码,跳到相应的except块中处理异常;异常处理完后,继续执行后续代码。|

try:
    print(1)
    num = 3/0
    print(2)
except BaseException as e:
    print(3)
    print(e)

输出
1
3
division by zero

3.try… 多个except异常处理

try:
	可能报错的语句执行体
except (报错异常名称):
	报错异常的语句执行体
except (报错异常名称):
	报错异常的语句执行体
except (报错异常名称):
	报错异常的语句执行体

跟上面的没有多大的区别,就是根据报错名称,去选择性的执行报错异常体,更好的让客户了解异常出现的原因

try:
    a = int(input("输入数字:"))
    b = int(input("输入数字:"))
    print(a/b)
except ZeroDivisionError:
    print("除数不能为0")
except ValueError:
    print("只能输入整数")
except BaseException as e:
    print(e)
输出:
输入数字:a
只能输入整数

输入数字:3
输入数字:0
除数不能为0

4.try_except_else异常处理结构

try…except…else结构增加了“else块”。如果 try块中没有抛出异常,则执行else块。如果trv块中抛出异常,则执行except块,不执行else块。

try:
    a = int(input("输入数字:"))
    b = int(input("输入数字:"))
    c = a/b
    print(c)
except ZeroDivisionError:
    print("除数不能为0")
except ValueError:
    print("只能输入整数")
except BaseException as e:
    print(e)
else:
    print(c*100)

输出
输入数字:3
输入数字:2
1.5
150.0

5.try_except_finally异常处理结构

无论代码有没有什么遇到异常,都会执行finally语句,通常是为了释放try资源

try:
	可能报错的语句执行体
except (报错异常名称):
	报错异常的语句执行体
finally:
	必须执行的代码

如果不存在该文件,f.close()就会报错,需要再try,接受异常

try:
    f = open("D://1.txt","r",encoding="utf-8")
    data = f.read()
    print(data)
except FileNotFoundError:
    print("file文件不存在")
finally:
    try:
        f.close()
    except NameError:
        print("f没有定义")

6.常见报错类型

错误类型描述
SyntaxError表示代码中存在语法错误。
IndentationError当代码中缩进不正确时发生。
NameError当未找到本地或全局名称时引发。
TypeError表示将操作或函数应用于不适当类型的对象。
ValueError当内置操作或函数收到具有正确类型但不合适值的参数时引发。
KeyError在字典键未找到时引发。
IndexError表示序列下标超出范围。
AttributeError在属性引用或赋值失败时引发。
ImportError当导入语句无法找到要导入的模块或名称时引发。
FileNotFoundError当请求但找不到文件或目录时引发。
IOError在输入/输出操作失败时引发(例如,打开或写入文件)。
ZeroDivisionError在除以零或取模零时引发。
KeyboardInterrupt当用户中断执行(例如,按下 Ctrl+C)时引发。
MemoryError表示操作耗尽了内存。
NotImplementedError当需要在子类中实现的抽象方法未实现时引发。
OverflowError表示算术操作的结果太大无法表示。
RecursionError表示超出了最大递归深度。
SystemExit当 Python 解释器退出时引发。
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值