Python异常处理– Python try except

时间:2020-02-23 14:42:40  来源:igfitidea点击:

在上一教程中,我们讨论了Python目录。
在本教程中,我们将学习Python异常处理。
Python尝试将关键字用于关键字中的异常处理,但关键字除外。

Python异常处理

基本上,异常意味着不期望的事情。
在现实生活中,我们对处理异常不感兴趣。
因此有句谚语:"例外不是一个例子"。
但是,当我们编写程序时,我们必须考虑例外情况。
例如,如果您的用户在期望输入整数对象时输入了字符串对象,则将引发异常。

异常妨碍正常的程序流。
如果发生任何异常,程序员需要进行处理。
因此,我们将在接下来的部分中学习异常处理。

一些内置的Python异常

下面列出了一些内置的python异常。

  • 异常:这是所有异常的基类。
    各种异常都应从此类派生

  • ArithmeticError:这是任何算术错误引发的异常的基类。

  • EOFError:当input()函数读取文件末尾而不读取任何数据时,引发此异常。

  • ZeroDivisionError:当除法或者模运算的第二个参数为零时,将引发此异常

  • AssertionError:断言语句失败时引发此异常。

  • FloatingPointError:当浮点操作失败时,将引发此异常。

  • KeyError:当在现有键集中找不到映射(字典)键时,引发此异常。

  • KeyboardInterrupt:当用户按下中断键(通常为Control-C或者Delete)时,引发此异常。
    在执行期间,会定期检查中断。

此外,您可以在其官方站点中找到所有内置异常的列表。

Python try except

在编写代码时,某些语句可能会引起错误。
因此,这些语句应包含try-except-else块。
例如,我们现在将通过代码引发异常。
以下代码将引发IndexError异常。

name = 'Imtiaz Abedin'
print(name[15])

print('This will not print')

如果您尝试运行代码,将获得以下异常。

Traceback (most recent call last):
File "/home/imtiaz/ExceptionHandling.py", line 2, in 
  print(name[15])
IndexError: string index out of range

由于字符串类型对象"名称"的大小小于15,并且我们正在尝试访问索引号15。
请看一下,该异常不会执行第二个打印语句。
因此程序由于异常而崩溃。
因此,在下一个代码中,我们将处理此异常。

name = 'Imtiaz Abedin'
try:
 print(name[15])
except IndexError:
 print('IndexError has been found!')

print('This will be printed print.')

因此,从以上两个示例可以看出,应该处理异常以避免程序崩溃。
在我们的第一个示例中,未执行最后一个print语句,因为程序在此之前发现了异常。
您可以看到try try关键字用于异常处理。

Python异常处理的基本结构

在上一节中,我们演示了异常如何引发以及如何处理。
在本节中,我们将讨论用于处理异常的基本编码结构。
因此,下面给出了Python异常处理的基本编码结构。

name = 'Imtiaz Abedin'
try:
 # Write the suspicious block of code
 print(name[15])
except AssertionError:  # Catch a single exception
 # This block will be executed if exception A is caught
 print('AssertionError')
except (EnvironmentError, SyntaxError, NameError) as E:  # catch multiple exception
 # This block will be executed if any of the exception B, C or D is caught
 print(E)
except :
 print('Exception')
 # This block will be executed if any other exception other than A, B, C or D is caught
else:
 # If no exception is caught, this block will be executed
 pass
finally:
 # This block will be executed and it is a must!
 pass

# this line is not related to the try-except block
print('This will be printed.')

在这里您可以看到,我们以不同的样式使用except关键字。
第一个except关键字仅用于捕获一个异常,即" AssertionError"异常。

但是,如您所见,第二个except关键字用于捕获多个异常。

如果使用except关键字而不提及任何特定的异常,它将捕获程序引发的任何异常。

如果未发现异常,则将执行else块。
最后,无论是否捕获到任何异常,都将执行" finally"块。

因此,如果运行上面的代码,我们将获得输出:

如果在上述代码中将" name [15]"更改为" nameee [15]",您将获得以下输出。

Python异常处理要点

为了进行专业的python项目,您需要注意异常。
一个简单的异常会破坏您的代码。
因此,您需要处理这些异常。
以下是有关处理异常的一些重要点。

  • 最好用try-except包围可疑代码。

  • 对一行可疑代码使用一个try-except块比对一行可疑代码使用一个try-except块要好。

  • 最好捕获特定的异常类。
    使用通用异常类对处理没有太大帮助。