关键词

python try 异常处理(史上最全)

Python Try-Except 异常处理指南

Python 中的异常处理是一种用于处理程序出现错误和异常情况的技术。在开发过程中,程序出现错误是一种必然情况,通过合理的异常处理,能够使我们的程序更加稳定和健壮。本文将介绍 Python 中关于异常处理的知识点。

异常概述

异常是指在程序运行时发生的错误,例如访问不存在的变量、除数为零、调用不存在的方法等。当异常出现时,程序就会停止运行并抛出异常。Python 中提供了简便的处理异常的代码框架,即 try 和 except 语句。

try-except 语句

Python 中 try-except 语句的基本结构如下:

try:
    # 尝试执行的代码块
except ExceptionType:
    # 发现指定类型异常时执行的代码块

try 语句块中执行某个任务时,如果发生了预设范围内的异常,程序就跳入 except 代码块,进行相应的处理。

以下是 try-except 的示例:

try:
    a = 100 / 0
except ZeroDivisionError:
    print("除数为零")

以上代码中,程序会尝试除以 0,这时就会引发一个 ZeroDivisionError 异常,程序就会跳入 except 代码块,输出“除数为零”这条信息。

可以用来处理的异常类型很多,例如 NameError、TypeError、ValueError、FileNotFoundError 等。可以使用 except Exception 代替指定的单个异常类型,当发生任意一种异常时,就跳入 except 代码块。

try-except-else 语句

当使用 try-except 语句时,有时可能希望在没有发生错误时执行某个代码块,可以使用 try-except-else 来实现:

try:
    # 尝试执行的代码块
except ExceptionType:
    # 发现指定类型异常时执行的代码块
else:
    # 没有发生异常时执行的代码块

以下是 try-except-else 的示例:

try:
    a = 3
    b = 2
    c = a + b
except:
    print("发生了一个异常")
else:
    print("没有发生异常")

程序中 a 和 b 可以成功相加,所以不会跳入 except 代码块。于是程序会执行 else 代码块中的内容,“没有发生异常”就会输出。

try-except-finally 语句

有时候无论程序是否出现异常,都需要执行一段代码,try-except-finally 就可以做到这一点:

try:
    # 尝试执行的代码块
except ExceptionType:
    # 发布指定类型异常时执行的代码块
finally:
    # 最后一定要执行的代码块

以下是 try-except-finally 的示例:

try:
    a = 8
    b = 2
    c = a / b
except:
    print("发生了一个异常")
finally:
    print("完成异常处理")

程序中 a 和 b 可以成功相加,所以不会跳入 except 代码块。无论是否出现异常,finally 代码块都会被执行,输出“完成异常处理”。

自定义异常

在 Python 中,我们可以自己定义一些异常类型,来适应程序中的一些特定问题。自定义异常需要从 BaseException 类或者其子类中继承。以下是自定义异常的代码示例:

class MyException(Exception):  
    def __init__(self, message):  
        Exception.__init__(self)  
        self.message = message  

try:  
    raise MyException("自己的异常类型")  
except MyException as e:  
    print(e.message)  

以上代码中,MyException 类继承 Exception,自定义了一个名为 message 的属性,用于存储异常信息。使用 raise 语句抛出 MyException 类型异常,最终得到的结果就是打印出 message 中的“自己的异常类型”。

小结

Python 中的异常处理能够帮助我们处理那些在编写程序过程中出现的问题。使用 try-except-else 或 try-except-finally 等语句,可以帮助我们更好地管理异常。自定义异常可以让我们针对程序中的不同问题达到更好的解决效果。

本文链接:http://task.lmcjl.com/news/13368.html

展开阅读全文