python中的异常及几种常见异常

本文介绍了Python中的异常,强调了抛出异常在编程中的好处,如保持程序健壮性和收集错误信息。并详细讲解了如何在编程中应用异常处理,包括一般的异常捕获、try-else和try-finally结构,以及如何自定义异常。还列举了requests模块中常见的异常类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常

异常(Exception),程序在运行过程中发生由于外部问题(如硬件错误、输入错误)等导致的程序异常事件。

在Python等面向对象的编程语言中,异常本身是一个对象,产生异常就是产生了一个异常对象。

 

抛异常的好处

在编程中抛出异常,可以使得程序能够继续执行,而不是中途停止,能够保持程序的健壮性。二是,抛出异常可以帮助我们做好留痕工作,对有问题的数据进行收集处理。

 

编程中应用

Python

一般捕获异常方式

在python中,我们一般使用以下格式来进行异常的捕获。

try:
    '代码块'
except [异常类型]:
    '代码块'

 将可能发生异常的代码放在try下的代码块中。当try里面的代码发生异常时,如果符合except后的异常类型就直接转向执行except里的代码块;try里面的代码没有出现问题,就不执行except里的代码。

except后如果不写异常类型,则表示捕获所有异常类型。

try:
    print(1/0)
except ZeroDivisionError as e:
    print(e)

except [异常类型] [as 变量名(保存异常信息)],[]括号中的可写可不写。

try-else

没有发生异常时,在执行完try代码块后执行else的代码。有异常则不执行else里面的代码块。

try:
    print('开始程序')
    print(1/0)
except ZeroDivisionError as e:	
    print(e)
else:
    print('else')

try-Finally

无论有没有异常,最后都执行finally后的语句。写在最后面

 

自定义异常raise

定义异常类:可以自定义一个错误类例如

class Error(Exception):
    def __init__(self, smg):
        self.smg = smg
    def __str__(self,):
        return str(self.smg)

格式:raise+异常对象(‘异常描述’)

try:
    raise Error('2333')  #抛出异常
except Error as e:   
    print(e)   #调用自定义异常类

>>>2333

 

异常种类:

Exception 异常的父类,可以捕获多个子类

在requests模块中常见的异常:

在requests.exceptions方法下查看

requests.exceptions ConnectionError #未知的服务器

requests.exceptions ConnectTimeout #连接\读取超时

requests.exceptions ProxyError #代理连接不上

Python中,异常处理是通过`try`、`except`、`else`和`finally`语句来实现的。以下是几种常见异常处理方式: 1. **基本异常处理**: 使用`try`和`except`块来捕获和处理异常。 ```python try: # 可能引发异常的代码 result = 10 / 0 except ZeroDivisionError: # 处理除零异常的代码 print("除零错误!") ``` 2. **捕获多种异常**: 可以在一个`except`块中捕获多种异常,或者使用多个`except`块分别处理不同的异常。 ```python try: # 可能引发异常的代码 result = int("abc") except (ValueError, TypeError): # 处理ValueError和TypeError异常的代码 print("输入错误或类型错误!") ``` 3. **使用`else`块**: `else`块中的代码在`try`块中没有发生异常时执行。 ```python try: # 可能引发异常的代码 result = 10 / 2 except ZeroDivisionError: # 处理除零异常的代码 print("除零错误!") else: # 没有发生异常时执行的代码 print("结果是:", result) ``` 4. **使用`finally`块**: `finally`块中的代码无论是否发生异常都会执行,通常用于释放资源。 ```python try: # 可能引发异常的代码 file = open("example.txt", "r") # 读取文件的代码 except IOError: # 处理IO异常的代码 print("文件操作错误!") finally: # 无论是否发生异常都会执行的代码 file.close() ``` 5. **自定义异常**: 可以通过继承`Exception`类来自定义异常。 ```python class MyError(Exception): def __init__(self, message): self.message = message try: raise MyError("自定义异常信息") except MyError as e: print("捕获到自定义异常:", e.message) ``` 通过这些方式,Python提供了灵活的异常处理机制,帮助开发者更好地管理和响应程序运行中的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值