python异常exception

发布时间:2023年12月18日

1、异常对象

语法:
	try...
	except  异常名称 :
		...
	finally:
		...
l = []
try:
    # print(c) # NameError
    # l[10] # IndexError
    # print(10/0) # ZeroDivisionError
    # 1 + 'hello' # TypeError
except NameError:
    # 如果except后不跟任何的内容,则此时它会捕获到所有的异常
    # 如果在except后跟着一个异常的类型,那么此时它只会捕获该类型的异常
    print('出现 NameError 异常')
except ZeroDivisionError:
    print('出现 ZeroDivisionError 异常')
except IndexError:
    print('出现 IndexError 异常')
# Exception 是所有异常类的父类,所以如果except后跟的是Exception,他也会捕获到所有的异常
# 可以在异常类后边跟着一个 as xx 此时xx就是异常对象
except Exception as e:
    print('未知异常', e, type(e))
    # 未知异常 unsupported operand type(s) for +: 'int' and 'str' <class 'TypeError'>
finally:
    print('无论是否出现异常,该子句都会执行')

2、自定义异常

raise用于向外部抛出异常,后边可以跟一个异常类,或异常类的实例

class MyError(Exception):
    pass


def add(a, b):
    # 如果a和b中有负数,就向调用处抛出异常
    if a < 0 or b < 0:
        # raise用于向外部抛出异常,后边可以跟一个异常类,或异常类的实例
        # raise Exception
        # raise Exception('两个参数中不能有负数!')
        raise MyError('自定义的异常')

        # 也可以通过if else来代替异常的处理
        # return None
    r = a + b
    return r


print(add(-123, 456))

# output:
# __main__.MyError: 自定义的异常

3、常用

file_name = 'demo.txt'

try:
    with open(file_name) as file_obj :
        print(file_obj.read())
except FileNotFoundError:
    print(f'{file_name} 文件不存在~~')

使用open()打开文件时必须要指定打开文件所要做的操作(读、写、追加)

r    表示只读的
r+ 	 即可读又可写,文件不存在会报错
w 	 表示是可写的,使用w来写入文件时,如果文件不存在会创建文件,如果文件存在则会截断文件(截断文件指删除原来文件中的所有内容)
w+ 	 可读写,会清空文件内容,文件不存在不会报错,会创建新的文件并写入
a	 只能写,文件不存在,不报错,不会清空文件内容
a+   可读写,文件不存在,不报错,不会清空文件内容
x    用来新建文件,如果文件不存在则创建,存在则报错
文章来源:https://blog.csdn.net/2301_81159774/article/details/135012452
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。