一、异常处理机制
异常处理是指在程序运行过程中,当遇到错误时,程序能够捕获异常并进行处理,而不会导致程序崩溃,即程序运行时发生的不正常事件。Python 使用 try、except、else 和 finally 语句来处理异常。
异常分为:内置异常、自定义异常。
二、常见的内置异常
Python 提供了很多常见的内置异常类型,常见的内置异常包括但不限于:
ZeroDivisionError:除以零时触发的异常。ValueError:传入函数的参数类型正确,但值不合适时触发的异常。IndexError:尝试访问列表、元组等序列类型中不存在的索引时触发。KeyError:访问字典中不存在的键时触发。FileNotFoundError:文件不存在时触发。TypeError:操作或函数应用于不适当的数据类型时触发。AttributeError:尝试访问一个不存在的对象属性时触发。
示例:
print(5/0)

三、内置异常处理
异常处理是对异常进行捕获、抛出、处理,提高程序健壮性的机制。
算法的设计要求:正确性、可读性、健壮性、高效率、低存储
使用关键字try except finally else组合成不同的处理方式,其中try和except是核心。
简单模式:
最简单的异常处理模式是 try 和 except 语句,它捕获程序中发生的异常并处理。
示例:
try:
x = int(input("输入一个数字"))
except ValueError:
print("这不是int型")
捕获多个异常结构
我们可以在 except 子句中捕获多个异常。如果有多个异常类型可能会触发,我们可以列出这些异常类型,并针对不同的异常执行不同的代码。
#第一种
try:
print('hello' + 1234)
except NameError:
print("命名错误")
except TypeError:
print("类型错误")
except IndentationError:
print("缩进错误")
#第二种
try:
print('hello' + 1234)
except (NameError, TypeError, IndentationError):
print("有错误")
#第三种
try:
print('hello' + 1234)
except Exception as e:
print(f"有{e}错误")
try...except...else结构
else 语句块用于在 try 语句块中没有发生异常时执行。只有当 try 语句块执行没有异常时,才会进入 else 语句块。
try:
c=2/0
except Exception as e:
print(f"{e}错误")
else:
print(c)
try:
c=2/1
except Exception as e:
print(f"{e}错误")
else:
print(c)
try...except...else...finally结构
finally 语句块无论异常是否发生,都会执行。它通常用于清理资源或执行一些必要的收尾工作,例如关闭文件或数据库连接。
try:
a = 3
b = 1
c = a/b
except Exception as e:
print(f"{e}错误")
else:
print(c)
finally:
print("无论异常不异常都会输出")

四、自定义异常
python放入内置异常已经很丰富了,但是我们还是可以自定义异常的,也就是说我们可以根据自己的实际需求做异常判断。
在学习自定义异常之前,先来看一下 raise的使用。
raise可以手动抛出异常——内置异常或者自定义异常都可以。
def sub(a, b):
if a<b:
raise Exception('被减数不能小于减数')
else:
return a - b
try:
print(sub(3, 10))
except Exception as e:
print(e)

自定义异常类,自定义异常必须继承Exception类
class MyException(BaseException):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try:
raise MyException('异常消息字符串')
except MyException as e:
print(e)

总结
Python 的异常处理机制为程序员提供了一种优雅的方式来处理错误和异常。通过使用 try...except 语句,程序可以捕获并处理运行时错误,而不会中断整个程序的执行。此外,Python 还支持 else 和 finally 块,使得异常处理更加灵活。
- 常见的内置异常:例如
ValueError、ZeroDivisionError、FileNotFoundError等。 - 捕获多个异常:可以通过逗号分隔来同时捕获多个异常。
else和finally:else用于在没有异常时执行的代码,finally用于无论是否发生异常都要执行的清理工作。- 自定义异常:通过继承
Exception类可以定义自定义的异常类型,适用于特定场景。
异常处理是每个 Python 开发者都应该掌握的技能,它能让你的代码更加健壮、稳定。通过合理使用异常处理,你能够确保在错误发生时,程序能够做出正确的反应,而不会崩溃或进入不稳定的状态。
3291

被折叠的 条评论
为什么被折叠?



