异常处理try...except的应用

'''
try...except语法应用
出现问题一般两种提示:
    1.Error(错误):一般是语法导致的问题,运算逻辑出现问题,都会在控制台以Error形态展示。
    可以通过Error在控制台的相关信息快速去排查定位缺陷的所在点
    2.Exception(异常):一般是程序运行时,由于环境导致的问题。由于数据传递出现错误等情况。
对于编写的程序可能会出现问题的风险,可以提前使用try...except语法实现对错误的预处理。

try...except语法应用:
    1.基本的语法结构
    针对可能出现问题的代码块进行的异常处理手段。
        try:
            异常代码块
        except:
            出现异常后的处理手段:是否真的解决了异常并不重要。
            对于程序而言,只要进入此处,异常就处理掉了。
    如果try中的代码出现异常会进入except进行处理,代码不会终止运行。
    try...except一般是基于一个完整的代码块进行处理。而非单独一行代码
    try...except是可以进行嵌套处理的
    2.Exception对象:
        Exception类,所有的异常和错误,他们的父类都是BaseException类来实现的。我们所发现的每一个明确的异常
        都是可以在try...except之中进行指定的。
        as就是取别名:
            except Exception as e:驳货Exception对象,将其赋值给临时变量e
        我们可以自定义Exception类。实现对自定义异常的定义。
        因为异常是多样化的,所以在一个try中可以用多个except捕获不同异常。
    3.Else...Finally...语法结构:
        try:
            可能出现异常的代码
        except:
            出现异常的解决手段
        else:
            未出现异常,执行此处
        finally:
            无论是否出现异常,最后都会执行

        else不常用,除非代码在try和else有很强关联性。
        finally用的非常多。一般用于代码最后执行的保障。常见于资源的释放等操作。
        try...except...是固定搭配,else和finally是选配。
    4.raise关键字:用于手动抛出指定异常的操作。
        当遇到的异常不想/不能处理的时候,可以将其抛出,让程序继续产生异常。
        异常抛出后是继续存在的,。手动抛出异常相当于制造了一个异常或将原本的异常未作处理 。
        raise可以抛出指定异常,默认抛出RuntimeError。
    5.Traceback模块:python官方模块,无需安装,直接导入使用。
        当添加try...except之后,所有的异常都不会显示在控制台之中。对于排查问题有很大阻碍。
        调用Traceback.print_exc()方法可以将异常信息正常显示在控制台,方便排查问题。
        Traceback本身就是程序出现异常时默认调用的异常记录模块。
'''
import traceback

# 自定义异常类,:自定义异常类可以定义很多内容,可自行了解。
# class mpfException(Exception):
#     pass
#
# # try...except示例
# try:
#     print('step 1')
#     try:
#         1/0     #出现异常,跳入except
#         print('step 3')  # 异常后的代码不再执行
#     except Exception as e:   #指定捕捉的异常对象,如果异常与指定异常不符合,则不会进入该except中
#         print('嵌套except')
#         print(e)
#
# except:
#     print('exception')      #如果try不报错,则except不执行
#
# print('out of try')


# except的多样化异常捕获示例
# try:
#     1/0
# except TypeError as t:
#     print(t)
# except ZeroDivisionError as z:
#     print(z)
# except Exception as e:
#     print(e)

# try:
#     # 1 / 0
#     print('try')
# except Exception as e:
#     print(e)
# else:
#     print('else')  # try没有异常,才会进入此处
# finally:
#     print('finally')  # 无论是否异常,都会执行此处


# try:
#     print('hello')
#     raise
# except Exception as e:
#     print('e')
#     print(e)


# Traceback示例
# try:
#     1 / 0
# except Exception as e:
#     # print('e')
#     traceback.print_exc()  # 将异常信息正常显示在控制台之中。且不会影响程序的正常运行。
# print('异常已经被处理')


'''
    自动化测试也是有测试用例的。评估测试用例通过与否,其实就是基于用例运行是否报错来决定的。
    在程序的编写过程中,可能因为考虑到程序的健壮性以及稳定性,我们会调用try...except语法来
    帮助我们提升代码的稳定性。但是一定要考虑到测试用例本身的评估机制,可以通过raise关键字来帮助我们
    将本该失败的用例正常失败下去
'''

 

posted @ 2024-12-06 21:14  mafei666  阅读(128)  评论(0)    收藏  举报