python异常处理

本文详细介绍了Python中的异常处理机制,包括内置异常如SyntaxError、ZeroDivisionError等,以及如何使用assert、raise和try等语句来实现异常的断言、抛出与捕获。此外还介绍了自定义异常的方法。

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

  • 异常概念

Python在执行代码之前,会进行语法检查,如果语法出错了,会抛出语法错误(SyntaxError)。

Python程序运行期间检测到的错误被称为异常。

内置异常:

BaseException:所有异常的基类

错误类异常(发生之后,如果不捕获,将会导致程序终止):

SystemExit:解释器请求退出

KeyboardInterrupt:用户中断执行(通常是输入^C)

  Exception:常规错误的基类

StopIteration:迭代器没有更多的值

ZeroDivisionError:除(或取模)零 (所有数据类型)

AssertionError:断言语句失败

AttributeError:对象没有这个属性

NotImplementedError:尚未实现的方法

SyntaxError:Python 语法错误

警告类异常(打印出警告信息,使用warnings模块调用,而不是使用raise抛出,不会中断程序的正常执行):

Warning:警告的基类

DeprecationWarning:关于被弃用的特征的警告

  • 异常概念

Python在执行代码之前,会进行语法检查,如果语法出错了,会抛出语法错误(SyntaxError)。

Python程序运行期间检测到的错误被称为异常。

内置异常:

BaseException:所有异常的基类

错误类异常(发生之后,如果不捕获,将会导致程序终止):

SystemExit:解释器请求退出

KeyboardInterrupt:用户中断执行(通常是输入^C)

  Exception:常规错误的基类

StopIteration:迭代器没有更多的值

ZeroDivisionError:除(或取模)零 (所有数据类型)

AssertionError:断言语句失败

AttributeError:对象没有这个属性

NotImplementedError:尚未实现的方法

SyntaxError:Python 语法错误

警告类异常(打印出警告信息,使用warnings模块调用,而不是使用raise抛出,不会中断程序的正常执行):

Warning:警告的基类

DeprecationWarning:关于被弃用的特征的警告

import warnings

 

warnings.warn("新的版本将会弃用", DeprecationWarning)

 

UserWarning:用户代码生成的警告

import warnings

 

warnings.warn("用户的忠告", UserWarning)

 

  • 异常相关语句

P38-4.2.2 assert(断言)

assert  bool表达式, 字符串

# 示例

assert  True, '断言失败'

P40-4.2.7 raise语句(抛出异常)

raise 异常对象实例

# 示例

raise Exception('程序员抛出的异常')

P50-4.3.4 try语句(捕获异常)

try-except

try-except-except(任意多个except)

try-except-else

try-except-finally

try-except-else-finally

  • 捕获异常

try语句

  • 抛出异常

raise语句

  • 自定义异常

继承自Exception类

自定义的异常类可以为空

class MyExcpet(Exception):

    pass

 

也可以重写父类的__init__和__str__方法

class MyExcpet(Exception):

    def __init__(self, value):

        self.value = value

    def __str__(self):

        return repr(self.value)

 

UserWarning:用户代码生成的警告

import warnings

 

warnings.warn("用户的忠告", UserWarning)

 

  • 异常相关语句

P38-4.2.2 assert(断言)

assert  bool表达式, 字符串

# 示例

assert  True, '断言失败'

P40-4.2.7 raise语句(抛出异常)

raise 异常对象实例

# 示例

raise Exception('程序员抛出的异常')

P50-4.3.4 try语句(捕获异常)

try-except

try-except-except(任意多个except)

try-except-else

try-except-finally

try-except-else-finally

  • 捕获异常

try语句

  • 抛出异常

raise语句

  • 自定义异常

继承自Exception类

自定义的异常类可以为空

class MyExcpet(Exception):

    pass

 

也可以重写父类的__init__和__str__方法

class MyExcpet(Exception):

    def __init__(self, value):

        self.value = value

    def __str__(self):

        return repr(self.value)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值