前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matinal:python 异常捕捉与异常处理

matinal:python 异常捕捉与异常处理

作者头像
matinal
发布2023-10-14 14:16:33
1530
发布2023-10-14 14:16:33
举报
文章被收录于专栏:SAP Technical

简介

在实际开发中,为了防止异常界面直接被用户看到,往往我们会采用捕捉异常的方式来进一步处理异常。

异常捕捉

如下代码由于下标越界会导致异常

代码语言:javascript
复制
data = range(10)
print(data[11])

IndexError: range object index out of range

因此我们采用try except捕捉异常方式

代码语言:javascript
复制
try:
    data = range(10)
    print(data[11])
except IndexError:
    print("IndexError")

IndexError

异常处理

在异常出现后,往往我们都需要做一些操作,例如关闭连接之类的,或者不出异常时做出啥处理.

异常出现后继续执行
代码语言:javascript
复制
try:
    data = range(10)
    print(data[11])
except IndexError:
    print("IndexError")
finally:
    print("finally")
代码语言:javascript
复制
IndexError
finally
不出现异常才执行
代码语言:javascript
复制
try:
    data = range(10)
    print(data[11])
except IndexError:
    print("IndexError")
else:
    print("finally")
代码语言:javascript
复制
IndexError
代码语言:javascript
复制
try:
    data = range(10)
    print(data[9])
except IndexError:
    print("IndexError")
else:
    print("finally")
代码语言:javascript
复制
9      
finally

注意else和finally可以同时出现。

异常自定义

通常情况下,我们会捕捉异常后做处理,但有些情况下我们需要在发生一些异常情况后主动抛出异常。我们只需要继承Exception类,实现其中的方法即可。

代码语言:javascript
复制
class MyException(Exception):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg


try:
    raise MyException("MyException")
except Exception as e:
    print(f"exception:{e}")
代码语言:javascript
复制
exception:MyException

断言

断言也是一种异常,在断言失败后会抛出AssertionError异常

补充

  • 捕捉异常后可以时代码正常执行下去,不会中途退出。
  • 在实际项目中我们可能需要捕捉到更详细的日志信息,例如报错在哪一行,可以在Exception中输出如下内容即可实现显示报错在哪一行
代码语言:javascript
复制
print(traceback.format_exc())
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 异常捕捉
  • 异常处理
    • 异常出现后继续执行
      • 不出现异常才执行
      • 异常自定义
      • 断言
      • 补充
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档