分享

Python异常处理

 软件测试test 2020-07-01

Python中的错误可以分为两种类型,即语法错误和异常。错误是程序中的问题,由于这些问题而导致程序停止执行。另一方面,当某些内部事件发生时,会引发异常,从而改变程序的正常流程。

语法错误和异常之间的区别

语法错误:顾名思义,此错误是由代码中的错误语法引起的。它导致程序终止。

# initialize the amount variable amount = 10000 #检查您是否有资格#是否购买Dsa Self Pacedif(amount>2999) print("You are eligible to purchase Dsa Self Paced")

输出:

异常:如果程序在语法上正确,但是代码导致错误,则会引发异常。该错误不会停止程序的执行,但是会改变程序的正常流程。

例:

# 初始化数量变量marks = 10000 #用0执行除法a = marks / 0print(a)

输出:


在上面的示例中,由于我们试图将数字除以0,因此引发了ZeroDivisionError。

注意: Exception是Python中所有异常的基类。您可以在此处检查异常层次结构
 

尝试并在异常处理中除外

让我们尝试访问索引超出范围的数组元素并处理相应的异常。

# Python program to handle simple runtime error a = [1, 2, 3] try: print "Second element = %d" %(a[1]) # 引发错误,因为数组中只有3个元素 print "Fourth element = %d" %(a[3]) except IndexError: print "An error occurred"

输出:

Second element = 2An error occurred

一个try语句可以具有多个except子句,以指定不同异常的处理程序。请注意,最多将执行一个处理程序。

# Program to handle multiple errors with one except statement try : a = 3 if a < 4 : # 抛出ZeroDivisionError为a = 3 b = a/(a-3) # 如果> = 4则抛出NameError print "Value of b = ", b # 请注意,对于多个异常,此处需要大括号()except(ZeroDivisionError, NameError): print "\nError Occurred and Handled"

输出:

Error Occurred and Handled

如果将“ a”的值更改为大于或等于4,则输出为

Value of b = Error Occurred and Handled

上面的输出是这样的,因为python一旦尝试访问b的值,就会发生NameError。

其他条款

在python中,您还可以在该try-except上使用else子句,该子句必须出现在所有except子句之后。仅当try子句未引发异常时,代码才进入else块。

# Program to depict else clause with try-except #返回a / b的函数def AbyB(a , b): try: c = ((a+b) / (a-b)) except ZeroDivisionError: print "a/b result in 0" else: print c # 驱动程序测试上述功能AbyB(2.0, 3.0) AbyB(3.03.0

上面程序的输出将是:

-5.0a/b result in 0

Python的最终关键字

Python提供了一个finally关键字,它总是在try和except块之后执行。在try块正常终止后或由于某些异常try块终止后,finally块始终执行。

句法:

try: # 一些代码...
except: #可选块       #处理异常(如果需要)
else: # 如果没有异常则执行
finally:      # 一些代码...(总是执行)

列子:

# Python program to demonstrate finally # 无异常try块中引发异常try: k = 5//0 # 提出除以零的异常。 print(k) # 处理零分区异常except ZeroDivisionError: print("Can't divide by zero") finally: #始终执行此块    #不考虑异常的产生。 print('This is always executed')

输出:

Can't divide by zeroThis is always executed

引发异常

引发语句使程序员可以强制发生特定的异常。raise中唯一的参数表示要引发的异常。这必须是异常实例或异常类(从Exception派生的类)。

# 描绘引发异常的程序 try: raise NameError("Hi there") # 引发错误except NameError: print "An exception" raise # 确定是否引发异常

上面代码的输出将简单地以行打印为“异常”,但由于最后一行的raise语句,最后也会发生运行时错误。因此,命令行上的输出将如下所示

Traceback (most recent call last): File "003dff3d748c75816b7f849be98b91b8.py", line 4, in raise NameError("Hi there") # 引发错误NameError: Hi there
使用Python附加到JSON文件
使用Python读取,写入和解析JSON
在Python中初始化:您需要了解的一切
建立数据驱动,关键字驱动和混合Selenium框架这些你了解吗
您需要了解的有关Selenium等待方法
如何在Selenium WebDriver中查找元素?(二)
如何在Selenium WebDriver中查找元素?(一)
python之函数基础


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多