gpt4 book ai didi

python的中异常处理机制

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python的中异常处理机制由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

什么是异常处理 。

定义:异常处理就是我们在写Python时,经常看到的报错信息,例如;NameError TypeError ValueError等,这些都是异常.

异常是一个事件,改事件会在程序执行过程中发生,影响程序的正常执行,一般情况下,在python中无法处理程序时就会发生异常,异常时Python的一个对象,表示一个错误,当Python脚本发生异常时,我们需要捕获并处理异常,否则程序就会终止执行.

Python 使用被称为 异常 的特殊对象来管理程序执行期间发生的错误。每当发生让 Python 不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个 traceback ,其中包含有关异常的报告。异常是使用 try-except 代码块处理的。 try-except 代码块让 Python 执行指定的操作,同时告诉 Python 发生异常时怎么办。使用了 try-except 代码块时,即便出现异常,程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的 traceback .

处理ZeroDivisionError异常 。

下面来看一种导致 Python 引发异常的简单错误。你可能知道不能将一个数字除以 0 ,但我们还是让 Python 这样做吧:

?
1
print ( 5 / 0 )

报错:

Traceback (most recent call last):   File "test.py", line 2, in <module>     print(5/0) ZeroDivisionError: integer division or modulo by zero 。

使用 try-except 代码块 。

当你认为可能发生了错误时,可编写一个 try-except 代码块来处理可能引发的异常。你让 Python 尝试运行一些代码,并告诉它如果这些代码引发了指定的异常,该怎么办.

处理 ZeroDivisionError 异常的 try-except 代码块类似于下面这样:

?
1
2
3
4
5
6
try :
   print ( 5 / 0 )
except ZeroDivisionError:
   print ( "You can't divide by zero!" )
 
# You can't divide by zero!

如果 try-except 代码块后面还有其他代码,程序将接着运行,因为已经告诉了 Python 如何处理这种错误.

使用异常避免崩溃 。

发生错误时,如果程序还有工作没有完成,妥善地处理错误就尤其重要。这种情况经常会出现在要求用户提供输入的程序中;如果程序能够妥善地处理无效输入,就能再提示用户提供有效输入,而不至于崩溃.

创建一个只执行除法运算的简单计算器:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
print ( "Give me two numbers, and I'll divide them." )
print ( "Enter 'q' to quit." )
while True :
   first_number = input ( "\nFirst number: " )
   if first_number = = 'q' :
     break
   second_number = input ( "Second number: " )
   try :
     answer = int (first_number) / int (second_number)
   except ZeroDivisionError:
     print ( "You can't divide by 0!" )
   else :
     print (answer)

try-except-else 代码块的工作原理大致如下:

Python 尝试执行 try 代码块中的代码;只有可能引发异常的代码才需要放在 try 语句中。有时候,有一些仅在 try 代码块成功执行时才需要运行的代码;这些代码应放在 else 代码块中。 except 代码块告诉 Python ,如果它尝试运行 try 代码块中的代码时引发了指定的异常,该怎么办.

通过预测可能发生错误的代码,可编写健壮的程序,它们即便面临无效数据或缺少资源,也能继续运行,从而能够抵御无意的用户错误和恶意的攻击.

处理 FileNotFoundError 异常 。

FileNotFoundError 错误是函数 open() 导致的,因此要处理这个错误,必须将 try 语句放在包含 open() 的代码行之前:

?
1
2
3
4
5
6
7
filename = 'alice.txt'
try :
   with open (filename) as f_obj:
     contents = f_obj.read()
except FileNotFoundError:
   msg = "Sorry, the file " + filename + " does not exist."
   print (msg)

处理多个文件 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def count_words(filename):
   """ 计算一个文件大致包含多少个单词 """
   try :
     with open (filename) as f_obj:
       contents = f_obj.read()
   except FileNotFoundError:
     msg = "Sorry, the file " + filename + " does not exist."
     print (msg)
   else :
     # 计算文件大致包含多少个单词
     words = contents.split()
     num_words = len (words)
     print ( "The file " + filename + " has about " + str (num_words) + " words." )
 
filenames = [ 'a.txt' , 'b.txt' , 'c.txt' , 'd.txt' ]
for filename in filenames:
   count_words(filename)

异常时保持静默 。

要让程序在失败时一声不吭,可像通常那样编写 try 代码块,但在 except 代码块中明确地告诉 Python 什么都不要做。 Python 有一个 pass 语句,可在代码块中使用它来让 Python 什么都不要做:

?
1
2
3
4
5
6
7
def count_words(filename):
   """ 计算一个文件大致包含多少个单词 """
   try :
     with open (filename) as f_obj:
       contents = f_obj.read()
   except FileNotFoundError:
     pass

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://www.jianshu.com/p/82f4b39aa39a 。

最后此篇关于python的中异常处理机制的文章就讲到这里了,如果你想了解更多关于python的中异常处理机制的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com