当前位置:   article > 正文

python主动抛出异常raise

python主动抛出异常raise

1 python主动抛出异常raise

如果程序执行不符合业务规则,此时程序应该主动抛出异常。

python主动抛出异常用raise语句。

1.1 raise用法

raise [异常名称 [(异常描述)]]
  • 1

1.2 描述

NO用法描述
1raise默认引发RuntimeError
2raise 异常名称引发指定名称的异常
3raise 异常名称(异常描述)引发指定异常并附带描述

1.3 raise默认抛出RuntimeError

示例

>>> raise
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    raise
RuntimeError: No active exception to reraise
  • 1
  • 2
  • 3
  • 4
  • 5

1.4 raise抛出指定异常

示例

>>> raise IndexError
Traceback (most recent call last):
  File "<pyshell#34>", line 1, in <module>
    raise IndexError
IndexError
  • 1
  • 2
  • 3
  • 4
  • 5

1.5 raise抛出带描述的指定异常

示例

>>> raise IndexError('string index out of range')
Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    raise IndexError('string index out of range')
IndexError: string index out of range
  • 1
  • 2
  • 3
  • 4
  • 5

1.6 raise主动抛出异常

示例

>>> def testraise():
    try:
        s=input('请输入一个字母:')
        #判断输入的是否为字母
        if(not s.isalpha()):
            raise ValueError('必须输入字母')
    except ValueError as e:
        print('输入错误:',repr(e))
>>> testraise()
请输入一个字母:6
输入错误: ValueError('必须输入字母')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1.7 raise抛出上下文捕获的异常

示例

>>> def raisenoargs():
    try:
        s=input('请输入一个字母:')
        if(not s.isalpha()):
            raise ValueError('必须输入字母')
    except ValueError as e:
        print('输入错误:',repr(e))
        # raise 不带参数,会将最近上文的错误再抛一次
        raise
>>> raisenoargs()
请输入一个字母:6
输入错误: ValueError('必须输入字母')
Traceback (most recent call last):
  File "<pyshell#53>", line 1, in <module>
    raisenoargs()
  File "<pyshell#52>", line 5, in raisenoargs
    raise ValueError('必须输入字母')
ValueError: 必须输入字母
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/205177
推荐阅读
相关标签
  

闽ICP备14008679号