【Python指南 | 第九篇】错误及异常

简介: 【Python指南 | 第九篇】错误及异常

在这篇文章中,将介绍错误处理及异常的相关知识。



在生成器那一节中我们讲到了try…except,这是针对异常的一种处理,Python中对异常的处理有多种方式。

try-else 语句

try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。

else 子句将在 try 子句没有发生任何异常的时候执行。

由于程序正常,故else后的语句共执行5次:

try-finally 语句

try-finally 语句无论是否发生异常都将执行最后的代码。

即使0作除数是非法的,finally后的代码也能被输出:

抛出异常

Python 使用 raise 语句抛出一个指定的异常。

x = 10
if x > 5:
    raise Exception('x的值 {} 不能大于 5'.format(x))

这里使用到了fomat函数,具体实现方式不再详述。

当然,我们也可以通过直接继承或间接继承的方式来自定义异常,举个例子:

class MyCustomException(Exception):
    def __init__(self, message):
        self.message = message
    def __str__(self):
        return self.message
'''
创建一个名为 MyCustomException 的自定义异常类,它继承自内置的 Exception 类。该类有两个方法:
    __init__() 方法用于初始化异常对象,接受一个字符串参数 message,保存异常的描述信息。
    __str__() 方法用于返回异常的字符串表示,即异常的描述信息。
'''
def divide(a, b):
    if b == 0:
        raise MyCustomException("Division by zero is not allowed.")
    return a / b
try:
    result = divide(10, 0)
    print("Result:", result)
except MyCustomException as e:
    print("An error occurred:", e)


目录
相关文章
|
3月前
|
Python
Python学习 -- 异常堆栈追踪技术
Python学习 -- 异常堆栈追踪技术
28 0
|
3月前
|
Python
Python学习 -- 异常捕获技巧
Python学习 -- 异常捕获技巧
20 0
|
1月前
|
开发者 UED Python
怎么理解python中的错误和异常
怎么理解python中的错误和异常
25 0
|
11天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
53 0
|
18天前
|
开发者 Python
使用python打印异常
Python的try-except用于异常处理,尝试执行try块中的代码,若出现异常,则由except捕获并处理。示例展示了当尝试除以零引发`ZeroDivisionError`时,如何打印异常信息。使用`traceback`模块可获取更详尽的异常堆栈信息。在实际应用中,异常信息应根据需求写入日志或发送给开发者,避免向用户暴露敏感信息。
11 0
|
24天前
|
Python
Python中异常的抛出与捕获
4月更文挑战第3天,Python中的异常是处理错误的方式,当错误发生时,异常被触发,未被捕获则导致程序终止。通过`raise`可手动抛出异常,例如`raise ValueError("Invalid value provided")`或自定义异常。使用`try-except`捕获异常,避免程序意外结束。`try`块包含可能出错的代码,`except`块处理特定异常,`else`子句在无异常时执行,`finally`子句确保清理代码始终执行。
17 2
Python中异常的抛出与捕获
|
1月前
|
Python
在Python中文件异常
在Python中文件异常
13 1