Python语言中程序运行错误和异常处理

'''
Python捕获异常:
一旦发生异常,程序就会终止,这是非常糟糕的事情,这种糟糕体现在两方面
    1.即便发生了异常,业务上可以忽略它,那么程序应当继续执行
    2.程序终止,使得异常的信息没有被保留下来,不利于问题的分析和总结
为了提高程序的健壮性和解决问题,可以将异常捕获,根据业务要求来做对应的处理
'''

import os


# 1. try ... except ... 语法来捕捉异常
def open_files(files):
    try:
        with open(files, 'r') as f:
            for line in f:
                print(line.strip()) 
    except Exception as err:# 可以指定抛出哪个异常,如果你不想指定,那么可以抛出异常Exception, 它是所有异常的父类
        print('文件不存在!\n{0}'.format(err))
    else:# 如果没有异常发生,则执行以下的内容
        print("文件读取成功")


# 2. try ... except ... finally 语句无论是否发生异常都将执行最后finally块内的代码
def open1_files(files):
    try:
        with open(files, 'r') as f:
            for line in f:
                print(line.strip()) 
    except FileNotFoundError as err:# except 可以指定想要捕获的异常
        print('文件不存在!\n{0}'.format(err))
    else:# 如果没有异常发生,则执行以下的内容
        print("文件读取成功")
    finally:# finally语句块,不论try子句里是否发生异常,也不论你在except语句块里做了什么操作,总之,最终一定会执行finally语句块里的代码
        print("executing finally clause")


# 3. 程序主动抛出异常 raise 语句自己触发异常(一般很少使用这种方式)
# 有时,程序需要主动抛出异常,因为某些情况下,你需要反馈消息给更上层的调用者,告诉它有一些异常情况发生,而你抛出异常的地方,没有能力处理它,因此需要向上抛出异常
def mye(level):
    if level > 1:
        raise Exception('level 不能大于 1')
        # 触发异常后,后面的代码就不会再执行
    print(level)
    return level


if __name__ == '__main__':
    open_files('1.txt')
    open1_files('2.txt')
    mye(2)

 

posted @ 2024-10-12 02:03  沉雪's  阅读(21)  评论(0编辑  收藏  举报