【Python学习】16.python异常处理

python异常处理包括两种

  • try...exept
    对于try下面的代码块,发生异常后
    对比,except定义的异常,如果一致,则执行except下面的代码块

代码示例

# 异常处理,try...except
# 异常抓捕

try:
    a = int(input('输入被除数'))
    b = int(input('输入除数'))
    c = a / b
    print(f'被除数{a},除以,除数{b}={c}')
except (ValueError,):# 异常处理,输入的内容转换int有问题,会执行此处的内容
    print('数字格式异常')
except ArithmeticError:# 异常处理,除数为0,执行此处内容
    print('除数不能为0')
except:
    print('未知异常')
print('程序继续执行')
  • pytest.raises()

代码示例

# 异常处理,pytest.raise()
import pytest

# b已知异常,捕获后可继续执行
def test_raise_case1():
    with pytest.raises((ValueError,ZeroDivisionError)):
        x = int('2f')
        d = 0
        c = x/d
        print(c)
    print('捕获异常后继续执行')

# 不知道预期异常,用match raise自定义异常

def case1(x):
    if x == 0:
        raise ValueError("value not 0 or None")
    return 2/x

def test_raise_case2():
    # match 可以用政策匹配
    with pytest.raises(ValueError,match=r'value not \d+$'):
        case1(0)
    assert eval('1+2') == 3
# 获得异常信息,用于断言
def test_raise_case3():
    with pytest.raises(ValueError) as exec_info:
        case1(0)
    print(f'exec_info.type={exec_info.type}')
    print(f'exec_info.value.args={exec_info.value.args}')

    assert exec_info.type == ValueError
    assert exec_info.value.args[0] == 'value not 0 or None'
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容