Python异常处理– Python try except
在上一教程中,我们讨论了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块要好。
最好捕获特定的异常类。
使用通用异常类对处理没有太大帮助。