12 异常

12 异常

一、异常

1、常见异常举例

image
image
image

二、异常处理

try:
    print("ok") #ok
    print(a) # a 未定义,报错NameError(不适用try程序终止)
except NameError:
    print("NameError")  # NameError

try:
    print("ok") #ok
    print(a) # a 未定义,报错NameError
except NameError as err:
    print(err)  # name 'a' is not defined
image
image
image
image
try:
    print("ok") #ok
    print(a) # a 未定义,报错NameError
except Exception as err:
    print(err)  # name 'a' is not defined

# 注意事项:
# 
# 1.
# try       下面放可能出错的代码
# 
# 2. except  try下面的代码出错后,会执行except下面的代码
# 
# 3. else try下面代码没有错误, 执行else下面的代码
# 
# 4. finally 不管try下面的代码有没有出错,始终都会执行

raise:程序出现错误:python 会自动触发异常,raise引发异常

# 异常处理

# 自动抛出异常
# raise:程序出现错误,python会自动触发异常,raise引发异常
# 异常处理
try:
    raise TypeError("主动抛出类型错误")
except FileNotFoundError:
    print("FileNotFoundError")
except ZeroDivisionError:
    print("ZeroDivisionError")
except Exception:
    print("其他普通类型")

# raise实际应用

    def func(name):
        if name == "nima":
            raise TypeError("黑名单")
    try:
        func("nima")
    except Exception as err:
        print(err)  # 黑名单

自定义异常类

class Myerror(Exception):
    pass

def func(name):
    if name == 1:
        raise Myerror("错了朋友")

try:
    func(1)
except Myerror as err:
    print(err)  # 错了朋友

三、断言 assert

# 2、断言语句是将调试断言插入程序的一种便捷方式
# 
# assert 的语法规则是:
# 
# 表达式返回 True  不报错
# 
# 表达式返回 False  报错  报 AssertionError

a = 1
b = 2
a == b  # 返回False
assert a==b # AssertionError

a = 1
b = 1
a == b  # 返回True
assert a==b # 不报错

你可能感兴趣的:(12 异常)