[Python教学] 例外处理

例外处理

http://img2.58codes.com/2024/20072651QbijoBKLhx.jpg

在Python中,tryexcept 是用来处理异常的关键字。它们让你能够在代码中检测和处理可能引发异常的情况,以确保程序在遇到问题时不会崩溃,而是能够优雅地处理错误情况。

基本用法

以下是 tryexcept 的基本用法:

try:    # 可能引发异常的代码    result = 10 / 0  # 这里故意引发了一个除零异常except Exception as e:    # 异常处理代码    print(f"发生异常: {e}")

在上面的代码中,我们在 try 块中放置了可能引发异常的代码,这里故意除以零引发了一个异常。然后,在 except 块中,我们定义了异常处理代码,它会捕获并处理 Exception 类型的异常(这是一个通用的异常类型),然后印出异常信息。

你也可以捕获特定类型的异常,例如:

try:    num = int("abc")  # 这里故意引发了一个 ValueError 异常except ValueError as e:    print(f"数值转换异常: {e}")

在这个例子中,我们只捕获了 ValueError 异常,这是在试图将字符串 "abc" 转换为整数时引发的异常。

使用 tryexcept 可以确保你的程序在出现异常时不会崩溃,而是能够以一种受控的方式处理异常情况,让你能够优雅地处理错误并採取适当的措施。

不同类型的异常

在Python中,你可以使用不同的 except 子句来捕获不同类型的异常。
以下是一些常见的异常类型及其相应的 except 子句:

通用异常捕获:你可以使用通用的 except 子句来捕获所有类型的异常。这在除错时可能很有用,但要小心不要滥用,因为它会捕获所有异常,包括你未预期的异常。
pythonCopy codetry:    # 可能引发异常的代码except Exception as e:    # 异常处理代码
指定特定异常类型:如果你只想捕获特定类型的异常,可以指定相应的异常类型。
pythonCopy codetry:    # 可能引发异常的代码except ValueError as e:    # 处理 ValueError 异常except ZeroDivisionError as e:    # 处理 ZeroDivisionError 异常
多个异常捕获:你可以在一个 except 子句中捕获多个异常类型,这样可以使用相同的处理代码处理它们。
try:    # 可能引发异常的代码except (ValueError, ZeroDivisionError) as e:    # 处理 ValueError 和 ZeroDivisionError 异常
捕获所有异常:如果你希望捕获所有异常,而不管它们的类型,可以使用 except 子句而不指定异常类型。
try:    # 可能引发异常的代码except:    # 处理所有异常
最终执行:你可以使用 finally 子句来指定无论是否发生异常都要执行的代码。这通常用于清理工作,例如关闭文件或资源。
pythonCopy codetry:    # 可能引发异常的代码except SomeException as e:    # 处理异常finally:    # 无论是否有异常,都会执行的代码

请根据你的程序需要选择适当的 except 子句,以确保你能够处理预期的异常并优雅地处理错误情况。

异常类型

10个常见的Python异常类型

异常类型说明SyntaxError程序语法错误,通常由不正确的程式码引起。IndentationError缩进错误,通常是由于错误的缩排或空格引起的。NameError变量或名称未定义引发的异常。TypeError类型错误,当操作不支持的数据类型时引发。ValueError值错误,通常与数值转换或数值操作有关。ZeroDivisionError除以零错误,当试图除以零时引发。FileNotFoundError文件未找到错误,当试图打开不存在的文件时引发。IndexError索引错误,当试图访问不存在的索引时引发。KeyError键错误,通常与字典操作有关,试图访问不存在的键。AttributeError属性错误,当试图访问对象上不存在的属性时引发。

结论

例外处理非常的实用,可以在程式发生异常的时候捕捉到,避免程式整个停止不动或提前结束,常常会搭配Log纪录,让你知道是哪变出错了,工程师在查看问题的时候才有明确的知道问题,加快处理的时间。

系列文章

分享所学贡献社会
[Python教学]开发工具介绍
[开发工具] Google Colab 介绍
[Python教学] 资料型态
[Python教学] if判断式
[Python教学] List 清单 和 Tuple元组
[Python教学] for 和 while 迴圈
[Python教学] Dictionary 字典 和 Set 集合
[Python教学] Function函示
[Python教学] Class 类别
[Python教学] 例外处理

最后最后有一件小小的请求,请大家帮我填写一下问卷,
让我们知道你想上怎么样课程,感激不尽。
问卷这边

Facebook 粉丝页 - TechMasters 工程师养成记

程式教育 - 工程师养成记

同步分享到部落格


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章