目录
异常的概念和分类
内置异常
自定义异常
try...except...finally语句
try-except语句
finally 语句
自定义异常
异常是指程序运行时出现的错误情况,例如除以零、变量未定义等。Python 提供了异常处理机制,使程序在出现异常时能够正确地处理错误,避免程序崩溃。Python 中的异常分为内置异常和自定义异常两种。
Python 提供了一些内置异常,可以直接在程序中使用。常见的内置异常包括:
除了内置异常,Python 还可以自定义异常。自定义异常可以用来表示程序中的特殊情况,例如网络连接异常、数据库连接异常等。自定义异常需要继承自 Exception 类或其子类,通常包含一个错误信息。
以下是一个自定义异常的示例:
上述代码定义了一个名为 NetworkError 的异常类,继承自 Exception 类。该类包含一个名为 message 的属性,用于存储错误信息。
在程序运行时,如果出现异常,可以使用 try-except 语句捕获并处理异常。try 语句包含可能引发异常的代码块,而 except 语句则包含在出现异常时需要执行的代码块。如果 try 语句中的代码块引发了异常,程序会跳转到 except 语句并执行其中的代码块。
以下是一个使用 try-except 语句处理异常的示例:
上述代码中,try 语句包含一个除以零的操作,很容易引发 ZeroDivisionError 异常。在 except 语句中,捕获该异常并打印出错误信息。
除了 try-except 语句外,Python 还提供了 finally 语句。finally 语句用于定义无论是否出现异常都要执行的代码块。通常用于释放资源等操作。
以下是一个使用 try-except-finally 语句处理异常的示例:
上述代码中,try 语句中打开一个文件并对其进行操作,如果文件未找到,则跳转到 except 语句中执行错误处理。无论是否出现异常,finally 语句都会执行 f.close() 操作,确保文件被正确关闭。
Python内置的异常类已经能够满足大部分情况下的异常处理需求,但在一些特殊的情况下,我们可能需要定义自己的异常类来处理特定的错误。
我们可以通过继承Python内置的Exception
类来定义自己的异常类。下面是一个示例:
在上面的代码中,我们定义了一个名为MyError
的自定义异常类,它继承自Python内置的Exception
类。在MyError
类的构造函数中,我们定义了一个message
参数,用于接收错误消息。在__str__
方法中,我们将message
参数的值返回。
接下来,我们可以在程序中使用raise
语句来抛出MyError
异常,如下所示:
在上面的代码中,我们使用if
语句检查用户输入的数是否小于0,如果是,则抛出MyError
异常,并在except
块中处理该异常。如果没有抛出异常,程序将继续执行。
自定义异常类可以帮助我们更好地组织和处理代码中的异常情况,使程序更加健壮和可读性更高。