【python基础】八、Python基础 - 异常处理

异常处理

  • 格式:
try:
    pass # 可能出现异常的代码
except:
    pass # 如有try出现异常,走这里
else:
    pass # 若未抛出异常, 走这里
finally:
    # 常用于 close 文件、数据库 等 释放内存
    pass # 无论有无异常,都执行(非必须)
  • except
try:
    raise Exception(ZeroDivisionError(' xxx error'))  # 可能出现异常的代码
except ZeroDivisionError as e:
    print('ZeroDivisionError', e)  # 做出 对应的异常 处理
except ValueError:
    print('ValueError')  # 做出 对应的异常 处理
except Exception as err:
    print(err)
    # 未预见异常 总处理
except Exception:  # 代码不可到达
    print('Exception')  # Exception 的全部 子类异常
finally:
    print(' **** run end **** ')

自上往下匹配except 异常,
若把except Exception:放在前面,
后面的子类异常匹配不到。

  • BaseException类
    • Exception 类
      • ZeroDivisionError
      • ValueError
      • 等等

try 中声明的变量,无法再 except 或 finall 中处理:

stream = None
try:
    stream = open('xx')
except:
    pass
finally:
    if stream:
        stream.close()

特殊的return

def func():
    try:
        return 1
    except:
        return 2
    finally:
        return 3
f = func()  # 无论什么情况,都执行finally,return 3
def func0():
    try:
        return 1
    except:
        return 2
    finally:
        pass
f = func0()  # 无论什么情况,虽都执行finally,但仍return 1或2

finally 的 return 覆盖了 try 或 except 的 return

抛出异常 raise
raise Exception(ZeroDivisionError(' xxx error')) 

在b站学习中

个人主页

学习链接

欢迎 批评 指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值