Python中异常捕获与处理的方法是什么

Python异常是在程序执行时发生的错误,可能会导致程序终止运行。

Python中,异常处理是一种机制,它允许开发人员在程序发生异常时捕获、处理和报告这些异常,以便程序可以继续运行或在出现异常时进行优雅的退出。

Python中,异常可以是标准异常(例如SyntaxError和TypeError)或自定义异常。标准异常是由Python内部定义的,而自定义异常是由开发人员定义的,通常用于特定的应用程序或库。

以下是一些常见的Python异常:

  • SyntaxError:语法错误,通常是由于语法错误导致的,如缺少括号、冒号等。

  • TypeError:类型错误,通常是由于将不同类型的对象组合在一起而引起的,如将字符串和数字相加。

  • ValueError:值错误,通常是由于提供的值不符合预期的范围或格式而引起的,如将字符串转换为整数时提供的字符串无效。

  • IndexError:索引错误,通常是由于尝试访问列表或元组中不存在的元素而引起的。

  • KeyError:键错误,通常是由于尝试访问字典中不存在的键而引起的。

  • IOError:输入/输出错误,通常是由于尝试读取或写入文件时出现问题而引起的。

  • AttributeError:属性错误,通常是由于尝试访问对象不存在的属性或方法而引起的。

Python中,可以使用try-except语句来捕获异常并处理它们。try语句包含可能会导致异常的代码,而except语句定义了在捕获异常时要执行的代码。

可以使用多个except语句来捕获不同类型的异常,try-except 还可以跟else 进行搭配,它的含义就是当 try 语句没有检测到任何异常的情况下,就执行 else 语句的内容,另外也可以使用finally语句定义在try语句块之后始终要执行的代码。

例如:

案例1:使用try-except语句来捕获异常并处理它们

举例:

try:
100/0 # 可能会导致异常的代码

except ZeroDivisionError: #(捕获特定的异常类型ZeroDivisionError,ZeroDivisionError是Python中的内置异常类之一,用于表示在除数为零的情况下进行了除法操作所引发的异常。)

    print('因为这里打印出异常类型:除数不能为0。')# 处理值错误的代码

Python中异常捕获与处理的方法是什么

案例2:使用try-except语句搭配else语句(当 try 语句没有检测到任何异常的情况下,就执行 else 语句的内容)

当 try 语句检测到任何异常的情况下,则不执行else 语句的内容

>>> try:
...     1 / 0
... except:
...     print("逮到了~")
... else:
...     print("没逮到~")
...

逮到了~

如果在 try 语句中检测到异常,那么就执行 except 语句的异常处理内容:

>>> try:
...     1 / 1
... except:
...     print("逮到了~")
... else:
...     print("没逮到~")
...
1.0

没逮到~

案例3:使用try-except语句搭配finally语句(无论异常发生与否,都必须要执行的语句finally语句)

举例:

try:
‘abc’+ 123

except TypeError: #TypeError为类型错误,通常是由于将不同类型的对象组合在一起而引起的,如将字符串和数字相加。
    print('因为这里打印出异常类型:类型错误。')# 处理类型错误的代码
finally:
    print('不论是否无法异常,都执行这句话') # 无论是否发生异常都会执行的代码

Python中异常捕获与处理的方法是什么

异常处理是Python中的重要概念之一,开发人员应该了解如何正确地捕获和处理异常,以确保程序的稳定性和可靠性。

进阶:捕获异常的方法

捕获异常的两种方法:不管是何种异常,都捕获异常信息。

1.使用Exception:所有的异常都是 Exception 的子类。所以 Exception能匹配所有类型的异常。

举例:

>>> try:
    100/0
except Exception  as e:
    print('未知异常:', e)
# 对于很多刚学Python或者是学着学着迷茫了的小伙伴,我给大家准备了一套Python的学习资料。
# 包括数百本电子书、Python基础视频教程、项目实战,疑难解答,直接在文末名片自取。
   
未知异常: division by zero
>>>

可以正常捕获到异常的原因,但不能输出详细的异常信息(发送异常的位置和异常的代码)。

2.使用traceback模块:使用traceback模块里面的format_exc函数,可以显示异常的信息 和 异常产生处的函数调用栈的信息。

举例:

>>>  import traceback
>>>  try:
    100/0
except  :
    print(traceback.format_exc())
 
 
Traceback (most recent call  last):
  File "<pyshell#5>", line 2, in <module>
ZeroDivisionError: division by  zero
>>>

上面的代码会打印出导致异常的详细的函数调用栈的信息

以上就是Python中异常捕获与处理的方法是什么的详细内容,更多请关注其它相关文章!