Python异常处理机制

一、异常处理机制

异常处理是指在程序运行过程中,当遇到错误时,程序能够捕获异常并进行处理,而不会导致程序崩溃,即程序运行时发生的不正常事件。Python 使用 tryexceptelsefinally 语句来处理异常。

异常分为:内置异常、自定义异常。

二、常见的内置异常

 Python 提供了很多常见的内置异常类型,常见的内置异常包括但不限于:

  • ZeroDivisionError:除以零时触发的异常。
  • ValueError:传入函数的参数类型正确,但值不合适时触发的异常。
  • IndexError:尝试访问列表、元组等序列类型中不存在的索引时触发。
  • KeyError:访问字典中不存在的键时触发。
  • FileNotFoundError:文件不存在时触发。
  • TypeError:操作或函数应用于不适当的数据类型时触发。
  • AttributeError:尝试访问一个不存在的对象属性时触发。
示例:
print(5/0)

三、内置异常处理

异常处理是对异常进行捕获、抛出、处理,提高程序健壮性的机制。

算法的设计要求:正确性、可读性、健壮性、高效率、低存储

使用关键字try except finally else组合成不同的处理方式,其中try和except是核心。

简单模式:

最简单的异常处理模式是 tryexcept 语句,它捕获程序中发生的异常并处理。

示例:

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 还支持 elsefinally 块,使得异常处理更加灵活。

  • 常见的内置异常:例如 ValueErrorZeroDivisionErrorFileNotFoundError 等。
  • 捕获多个异常:可以通过逗号分隔来同时捕获多个异常。
  • elsefinallyelse 用于在没有异常时执行的代码,finally 用于无论是否发生异常都要执行的清理工作。
  • 自定义异常:通过继承 Exception 类可以定义自定义的异常类型,适用于特定场景。

异常处理是每个 Python 开发者都应该掌握的技能,它能让你的代码更加健壮、稳定。通过合理使用异常处理,你能够确保在错误发生时,程序能够做出正确的反应,而不会崩溃或进入不稳定的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值