python抛出异常和捕获异常_python自定义异常

python抛出异常和捕获异常_python自定义异常主动抛异常1.抛异常有时,程序需要主动抛出异常,因为某些情况下,你需要反馈消息给更上层的调用者,告诉它有一些异常情况发生,而你抛出异常的地方,没有能力处理它,因此需要向上抛出异常。这种情况为什么不让系统自己抛出异常呢?一个原因是上层的调用者本身就希望能够捕获有别于系统异常的自定义异常,二来,有些情况下,程序的逻辑是没有异常的,但是,从业务角度考虑,的确是一个不寻常的情况,因此需要我们主动抛出异常…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

主动抛异常

1. 抛异常

有时,程序需要主动抛出异常,因为某些情况下,你需要反馈消息给更上层的调用者,告诉它有一些异常情况发生,而你抛出异常的地方,没有能力处理它,因此需要向上抛出异常。

这种情况为什么不让系统自己抛出异常呢?一个原因是上层的调用者本身就希望能够捕获有别于系统异常的自定义异常,二来,有些情况下,程序的逻辑是没有异常的,但是,从业务角度考虑,的确是一个不寻常的情况,因此需要我们主动抛出异常。

下面是抛出异常的一个例子

def divide(x, y):

if y == 0:

raise ZeroDivisionError(“0不能做分母”)

return x/y

if __name__ == ‘__main__’:

divide(10, 5)

divide(10, 0)

抛出异常时,你可以指定抛出哪个异常,如果你不想指定,那么可以抛出异常Exception, 它是所有异常的父类

def divide(x, y):

if y == 0:

raise Exception(“0不能做分母”)

return x/y

if __name__ == ‘__main__’:

divide(10, 5)

divide(10, 0)

2. 自定义异常类

在程序里引入自定义的异常类,可以让代码更具可读性,同时对异常的划分更加精细,那么在处理异常时也就更加具有针对性,自定义异常继承自Exception,或者那些类本身就继承自Exception

import requests

class HttpCodeException(Exception):

pass

def get_html(url, headers):

res = requests.get(url, headers=headers)

print(res.status_code)

if res.status_code != 200:

raise HttpCodeException

return res.text

try:

text = get_html(“http://www.coolpython.net”, {})

print(text)

except HttpCodeException:

print(“状态码不是200”)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183639.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Liquibase的简单使用[通俗易懂]

    Liquibase的简单使用[通俗易懂]`LiquiBase`是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通

    2022年8月5日
    4
  • serverless云开发_京东云与京东关系

    serverless云开发_京东云与京东关系在云原生技术全面爆发之前,我们开发的应用可以被称为非云原生应用,非云原生应用并没有考虑到应用的弹性和规模性,甚至很多都不具备扩展性,当业务规模扩大时,特别依赖硬件的升级,进而带来了很多问题。云原生的出现带来了新的开发方式,然而这一技术处于快速的发展过程中,导致很难定义清楚各类概念和理解各种技术名词。为此,Infoq专门采访了京东云中间件团队负责人李道兵,了解京东云在云原生领域的理念和…

    2022年10月10日
    0
  • java实现在线预览–poi实现word、excel、ppt转html

    java实现在线预览–poi实现word、excel、ppt转htmljava实现在线预览–之poi实现word、excel、ppt转html

    2022年6月6日
    41
  • 刚入职!就遇到上亿(MySQL)大表的优化

    刚入职!就遇到上亿(MySQL)大表的优化

    2022年2月15日
    46
  • duststorm和sandstorm_Stormwind

    duststorm和sandstorm_Stormwindvirustracker·2016/03/0310:17www.cylance.com/hubfs/2015_…CylanceSPEAR发现了一起针对日本、韩国、美国、欧洲以及其他几个东南亚国家的威胁行动,在上述国家中,有大量的行业部门都遭到了攻击。0x00多样的权利形式我们研究发现DustStorm最早从2010年开始活动,使用了大量不同的作战技术,包括钓鱼、水坑攻击和0-day漏洞。…

    2022年10月14日
    0
  • Pandas merge函数「建议收藏」

    Pandas merge函数「建议收藏」[toc]函数原型pd.merge(left,right,how=’inner’,on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=True,suffixes=(‘_x’,’_y’),copy=True,indicator=False,validate=None)参数left:拼接的左侧DataFrame对象r.

    2022年5月12日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号