Python的异常

异常基本用法
# coding:utf-8

if __name__ == '__main__':

    '''
    1.异常捕获处理
      try:
         代码逻辑......
      except 异常类型 as e:
         异常处理逻辑......
      finally:
         最终执行逻辑......
      try 需要配合 except 或 finally使用,不能单独使用
      使用try + except 异常类型 as e 捕获异常
      finally 中的逻辑是一定会执行的
    2. 就算在try 或 except return,finally 也一定会执行
    3. 如果finally中return,那么不管try,except中是否return,最后返回的值都是finally中return的值
    '''

    def divide_zero():
        1/0

    def divide_zero_base():
        try:
            1/0
        except Exception as e:
            print(e)

    def divide_zero_pro():
        try:
            1/0
        except Exception as e:
            print(e)
        finally:
            print('finally')

    # divide_zero() Traceback ...... ZeroDivisionError: division by zero
    divide_zero_base()  # division by zero
    divide_zero_pro()  # division by zero finally

    # 就算在try 或 except return,finally 也一定会执行
    def test_finally():
        try:
            return 'test_finally.try'
        finally:
            print('test_finally.finally')
    print(test_finally())  # test_finally.finally test_finally.try

    def test_finally1():
        try:
            1/0
        except ZeroDivisionError as e:
            return 'test_finally1.except'
        finally:
            print('test_finally1.finally')
    print(test_finally1())  # test_finally1.finally test_finally1.except

    # 如果finally中return,那么不管try,except中是否return,最后返回的值都是finally中return的值
    def test_finally_return():
        try:
            return 'try return'
        finally:
            return 'finally return'

    def test_finally_return1():
        try:
            1/0
        except ZeroDivisionError as e:
            return 'except return'
        finally:
            return 'finally return'

    print(test_finally_return())  # finally return
    print(test_finally_return1())  # finally return

常见异常类型
异常类型说明
Exception通用异常
ZeroDivisionError除0异常
SyntaxError语法错误
NameError变量名,类名,函数名未定义
TypeError缺少必填参数
AttributeError没有类,对象的属性
ValueError参数值错误
IndexError列表索引越界
KeyError访问dict不存在的key
自定义异常&主动抛出异常
# coding:utf-8

if __name__ == '__main__':
    '''
    1.自定义异常: class 自定义异常名(Exception):
              def __init__(self,message)
                  self.message = message
    2.使用raise主动抛出异常: raise 异常对象
    '''

    # 自定义LimitError异常
    class LimitError(Exception):
        def __init__(self, message):
            self.message = message

    def create_limit_error():
        # 使用raise主动抛出异常
        raise LimitError('自定义超限制异常')

    def test_error():
        try:
            create_limit_error()
        except LimitError as e:
            print(e)

    test_error()  # 自定义超限制异常
断言
# coding:utf-8

if __name__ == '__main__':
    '''
     assert 表达式,message(表达式为False时,会抛出异常 raise AssertionError(message))
    '''
    assert 1 == 1
    try:
      assert 1 == 2, '1不等于2'
    except AssertionError as e:
      print(e)  # 1不等于2
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值