我是靠谱客的博主 冷艳小馒头,最近开发中收集的这篇文章主要介绍Python的异常处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

异常处理的基本语法

主动触发异常

断言

自定义异常

真正使用 try ... except ....  的位置


 

异常处理的基本语法:

try:
被检测的代码块
except 异常类型:
#不填写异常类型则默认是 BaseException(可以接受Python解释器中已经声明的异常种类)
try中的代码块出现了异常,就会执行这个位置的逻辑

1.如果只是使用单个 except 去接受 try 中抛出的错误,则 except 后面的填写的异常类型也必须是 try代码块中所抛出的错误类型

名称必须相同,否则 依旧会报错  。如:

try:
a = 1/0
# 会抛出 ZeroDivisionError 异常
except ZeroDivisionError:
#如果这个位置说明了错误类型,则必须和上方抛出的错误类型相匹配
print("除零错误")

2.一个try 后可以跟 多个 except 。 可以接受不同的异常类型

try:
a = a + 1
#会抛出
NameError
lis = [1,2,3]
b = lis[4]
#会抛出 IndexError
except IndexError:
print("下标越界")
except NameError:
print("变量名未定义")

3.except 后可以不填写 错误类型 则会默认是 BaseException(万能异常接受)

4. try ...  except .... else

当try 代码块中的代码都没有抛出错误时,才会 执行 else 的代码

try:
a = 1
a = a + 1
print("代码正常执行")
except NameEroor:
print("代码出错了")
else:
print("try的代码都没有出错")
#try的代码都正常执行没有出错,才会执行该代码块

5.try... except... finally        # 由finally 必须有 try

finally  指的是 :

  1. 无论代码中是否出现异常,该finally中的代码都会执行 。但执行顺序有区别
  2. 当try中代码正常无异常时,finally中的代码会在try的代码执行完毕后才执行
  3. 如果try中代码出现了异常,若该异常有 except 接收,则会执行完 except 中的代码后才执行finally中的代码
  4. 但是如果该异常抛出但是没有 except 去接收, 则 finally中的代码会在 错误抛出之前就执行。

就第4举例:

try:
lis = [1,2,3]
b = lis[4]
except NameError:
#没有except 去接受 IndexError错误
print("111")
finally:
print("222")
"""
222
Traceback (most recent call last):
File "D:/BianCheng/python_test/s19/day21/demo.py", line 91, in <module>
b = lis[4]
IndexError: list index out of range
"""

 

主动触发异常:

关键字 raise 

格式: raise 错误类型(错误提示信息)

try:
raise TypeError("我就想你错")
except TypeError as e:
print(e)
# 我就想你错

注: TypeError  as  e  中的 e 只是一个约定俗成的别名。。。。

print(e)   可以打印错误的具体信息

try:
a = int("as")
except ValueError as e:
print(e)
#打印
invalid literal for int() with base 10: 'as'

 

 

断言:

关键字  assert 

格式: assert 条件

作用: 当 条件不满足时 ,强制报错

assert 1<0
# 打印结果
Traceback (most recent call last):
File "D:/BianCheng/python_test/s19/day21/demo.py", line 101, in <module>
assert 1<0
AssertionError

 

自定义异常:

class EvaException(BaseException)
#建议继承 BaseException
因为该类是所有的错误类型的超类
pass
#其实就可以
"""
def __init__(self,msg):
self.msg = msg
def __str__(self):
return self.msg
"""
try:
raise EvaException("类型错误")
exception EvaException as e:
print(e)
# 类型错误

 

真正使用 try ... except ....  的位置:

  1. 把错误处理和真正的工作分开来
  2. 代码更易组织,更清晰,复杂的工作任务更容易实现
  3. 不会因为一些小的疏忽使程序意外奔溃了

 

 

最后

以上就是冷艳小馒头为你收集整理的Python的异常处理的全部内容,希望文章能够帮你解决Python的异常处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部