两分钟让你轻轻松松掌握异常捕获

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Python 中的异常处理是通过 try 和 except 语句块来实现的。这种机制允许你检测并处理在程序执行过程中发生的错误。使用异常处理,你可以编写出更加健壮、用户友好的代码,即使在遇到错误时也能优雅地处理,而不是让程序崩溃。


提示:以下是本篇文章正文内容,下面案例可供参考

一、异常捕获的基本语法

  • try:可能发生异常的语句
  • except:捕获到异常,针对异常做出的处理
  • else:没有发生异常执行的语句
  • finally:不管有没有异常都会执行的语句
try:  
    # 尝试执行的代码块  
    pass  
except ExceptionType1:  
    # 如果在try块中抛出了ExceptionType1异常,则执行这里的代码  
    pass  
except (ExceptionType2, ExceptionType3):  
    # 如果在try块中抛出了ExceptionType2或ExceptionType3异常,则执行这里的代码  
    pass  
except Exception as e:  
    # 捕获所有其他类型的异常  
    print(f"An error occurred: {e}")  
else:  
    # 如果没有异常发生,则执行这里的代码  
    pass  
finally:  
    # 无论是否发生异常,都会执行这里的代码  
    pass

其中Exception为所有异常的父类,包含了所有异常。

二、常见的异常

ZeroDivisionError: 当除数为零时引发的异常。
IndexError: 索引不存在引发的异常。
KeyError: 键不存在引发的异常。
TypeError: 不支持给操作的数据类型异常。
ValueError: 不支持值的数据类型异常。
IOError: 当发生I/O错误时引发的异常。
MemoryError: 当内存不足时引发的异常。
OverflowError: 无法表示为浮点数时引发。
SyntaxError: 遇到语法错误时引发。
IndentationError: 遇到缩进错误时引发。
TabError: 当混合使用制表符和空格进行缩进时引发。

示例

代码如下:

while True:
    a = input('输入数字:')
    b = input('输入数字:')
    try:
        a = int(a)
        b = int(b)
        print(a / b)
    except ZeroDivisionError as e:
        print('除数为零错误', e)
    except TypeError as e:
        print('数据类型错误', e)
    except ValueError as e:
        print('数据错误', e)
    except Exception as e:
        print('未知错误', e)

自定义异常

在Python 我们还可以通过继承内置的 Exception 类来实现自定义异常。

class LTZero(Exception):
    """定义一个小于0的异常"""
    def __init__(self, msg):
        super().__init__(msg)

while True:
    input_str = input('输入一个数字:')
    try:
        input_int = int(input_str)
    except ValueError as e:
        print(f'数据类型异常:{e}')
    else:
        try:
            if input_int < 0:
                raise LTZero('输入数字小于0')
        except LTZero as e:
            print(f'异常情况:{e}')
        else:
            print('奇数' if input_int % 2 else '偶数')
  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值