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)
上一篇 2022年10月10日 上午9:16
下一篇 2022年10月10日 上午9:36


相关推荐

  • linux两台server远程copy文件

    linux两台server远程copy文件

    2022年2月1日
    46
  • ActionContext_activity和action的区别

    ActionContext_activity和action的区别

    2025年10月15日
    5
  • 在类中如何使用 Server.MapPath

    在类中如何使用 Server.MapPath直接在类中使用Server.MapPath会出现错误,这是由于类中不能直接使用System.Web.UI.Page的非静态函数造成的。解决方法有两种:方法一、为类增加继承classCFoo:System.Web.UI.Page方法二、利用上下文直接使用System.Web.HttpContext.Current.Server.MapPath在使用方法一时请注意:C#中,派生类只能从一个类中继承。方法二中,System.Web.HttpContext.Current中System.Web是

    2022年7月15日
    16
  • 使用adb命令安装安卓apk包[通俗易懂]

    使用adb命令安装安卓apk包[通俗易懂]虽然网上也有许多adb安装安卓包的教程,但经过自己亲自试了一下后,觉得自己写下来的才是自己的收获。一、下载安装adb工具下载地址有很多,这里是我下载的地址:https://pan.baidu.com/s/1mgGkNZM,下载文件比较齐全。下载后是个压缩包,解压后一共有5个文件,如下图:这里我都是解压到当前文件夹了因为安装包里就有个cmd,所以就省去了在运行中打开cmd,再在cmd中打开adb的步骤了,在要用adb工具时直接点击cmd.exe就可以了。如下有位网友总结的安.

    2022年6月3日
    74
  • fastclick使用与解密

    fastclick使用与解密fastclick可以消除点击延时提高程序的运行效率。FastClick是一个非常方便的库,在移动浏览器上发生介于轻敲及点击之间的指令时,能够让你摆脱300毫秒的延迟。FastClick可以让你的应用程序更加灵敏迅捷。支持各种移动浏览器,比如Safari、Chrome、Opera等。

    2022年6月19日
    28
  • linux目录结构详解_linux系统文件在哪个目录

    linux目录结构详解_linux系统文件在哪个目录前言平常linux系统用的也不少,那么linux下的每个目录都是用来干什么的,小伙伴们有仔细研究过吗?让我们来了解下吧Linux系统目录结构登录系统后,在当前命令窗口下输入命令:[root@

    2022年7月30日
    7

发表回复

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

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