python中抛出异常_python mkdir

python中抛出异常_python mkdir抛出异常:Python程序中的异常不仅可以自动触发,还可以由开发人员使用raise语句和assert语句主动抛出。使用raise语句抛出异常:1.使用异常类引发异常格式如下:raise异常类#格式1:使用异常类名引发指定的异常示例如下所示:raiseNameError运行界面如下:2.使用异常类对象引发异常格式如下:raise异常类对象#格式2:使用异常类的对象引发指定的异常示例代码如下:raiseNameError()运行…

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

Jetbrains全系列IDE稳定放心使用

 抛出异常:

Python程序中的异常不仅可以自动触发,还可以由开发人员使用raise语句和assert语句主动抛出。

使用raise语句抛出异常:

1.使用异常类引发异常

格式如下:

raise 异常类  #格式1:使用异常类名引发指定的异常

示例如下所示:

 raise NameError

运行界面如下:

python中抛出异常_python mkdir

2.使用异常类对象引发异常

格式如下:

raise 异常类对象   #格式2:使用异常类的对象引发指定的异常

示例代码如下:

raise NameError()

运行界面如下:

python中抛出异常_python mkdir

以上代码中的raise之后的NameError()用于创建异常类对象。创建异常类对象时还通过字符串指定异常的具体信息。

示例代码如下:

raise NameError("索引下标超出异常")

运行界面如下所示:

python中抛出异常_python mkdir

 3.重新引发异常:

格式如下:

 raise  #格式3:使用刚出现过的异常重新引发异常

代码如下:

try:
    raise NameError
except:
    raise

运行界面: 

python中抛出异常_python mkdir

以上示例中的try语句执行后会出现因raise语句引发的NameError异常,出现异常后except子句会被执行;except子句后的代码又使用raise语句抛出刚刚发生的NameError异常,最终程序因再次抛出异常而终止执行。

raise语句的语法格式总结如下:

1.raise 异常类  #格式1:使用异常类名引发指定的异常

2.raise 异常类对象   #格式2:使用异常类的对象引发指定的异常

3. raise  #格式3:使用刚出现过的异常重新引发异常

以上3种格式都是通过raise语句抛出异常。第1种格式和第2种格式是对等的,都会引发指定类型的异常。其中,第一种格式会隐式创建一个该异常类型的对象,第2种格式是最常见的形式,它会直接提供一个该异常类型的对象,第3种格式用于重新引发刚刚发生的异常。

使用assert语句抛出异常:

assert语句又称为断言语句,其语法格式如下所示:

assert 表达式[,异常信息]

以上语法格式的assert后面紧跟一个表达式,表达式的值为False时触发AssertionError异常,值为True时不做任何操作;表达式之后可以使用字符串来描述异常信息。

assert语句可以帮助程序开发者在开发阶段调试程序,以保证程序能够正确运行。

下面使用断言语句判断用户输入的除数是否为0,示例代码如下:

num_one = int(input("请输入被除数:"))
num_two = int(input("请输入除数"))
assert num_two !=0,'除数不能为0'
result=num_one/num_two
print(num_one,'/',num_two,'=',result)

运行界面: 

python中抛出异常_python mkdir

以上代码首先会接收用户输入的2个数num_one和num_two,并将num_one和num_two分别作为被除数和除数;然后使用assert语句判定num_two不等于0,若不等于0则进行除法运算,否则会引发AssertionError异常,并提示”除数不能为0″;最后输出num_one除以num_two的结果。

异常的传递:

如果程序中的异常没有被处理,默认情况下会将该异常传递到上一级,如果上一级仍然没有处理异常,那么会继续向上传递,直至异常被处理或程序崩溃。

示例如下:

代码示例如下:

def get_width():            #get_width()函数用于计算正方形边长
    print("get_width开始执行")
    num=int(input("请输入除数:"))
    width_len=10/num
    print("get_width执行结束")
    return width_len
def calc_area():            #calc_area函数用于计算正方形面积
    print("calc_area开始执行")
    width_len =get_width()
    print("calc_area执行结束")
    return width_len*width_len
def show_area():         #show_area()函数用于输出正方形的面积
    try:
        print("show_area开始执行")
        area_val=calc_area()
        print(f"正方形的面积是:{area_val}")
        print("show_area执行结束")
    except ZeroDivisionError as e:
        print(f"捕捉到异常:{e}")
show_area()

以上定义的函数show_area()为程序入口,该函数中调用了calc_area()函数,calc_area()函数中又调用了get_width函数。

不出现异常时的运行机制:

通过对该程序的分析,可知,程序的入口为show_area( ),首先执行函数show_area(),这个函数里面有try-except判断异常机制,识别try子句,无异常的时候,根据代码,首先输出show_area开始执行,之后将calc_area()的值赋给area_val,通过代码可知,calc_area的值可通过上一级的calc_area函数得到,看这段代码,输出calc_area开始执行,之后将get_width的值赋给width_len,与上面相似,可知get_width函数开始运行,输出get_width开始执行,然后输入除数,然后输出get_width执行结束,calc_area执行结束,输出正方形的面积是多少,输出show_area执行结束!

运行界面如下:

python中抛出异常_python mkdir

有异常的运行机制:

因为只在show_area函数里面存在try-except异常识别机制,当get_width()函数使用变量num接收用户输入的除数,通过语句width_len=10/num计算正方形的边长,如果用户输入的除数值为0,那么程序会引发ZeroDivisionError异常。因为get_width()函数中并没有捕获异常的语句,所以get_width()函数中引发的异常向上传递到calc_area()函数,calc_area()函数中也没有捕获异常的语句,只能将异常继续向上传递到show_area()函数。

show_area函数中设置了异常捕获语句try-except,它在接收到由calc_area()函数传递的异常后,会通过try-except捕获并处理异常。

 运行界面如图所示:

python中抛出异常_python mkdir

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

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

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


相关推荐

  • Python常用爬虫方法

    Python常用爬虫方法1

    2025年9月15日
    0
  • 数据库表结构设计[通俗易懂]

    数据库表结构设计[通俗易懂]为什么要学习数据表结构设计实际开发中,需要根据需求,将实际模型转换成物理表结构,这时需要考虑几个问题,表名称如何命名,表中需要哪些字段,各个字段的命名规范,字段的数据类型,字段的长度,和其他表的联系,这些都是需要考虑的。推荐使用的工具PowerDesigner这个工具,可以做UUML图帮助分析数据关系,最重要的是可以把设计好的表结构转换成你使用的数据库的命令语句,方便在数据库中使用…

    2022年9月13日
    2
  • 使用AnalyticDB MySQL创建数据库及表过程

    使用AnalyticDB MySQL创建数据库及表过程简介目标是让云上数据仓库用户及开发者通过简单的步骤体验基于AnalyticDBMySQL版和DMS构建云原生数据仓库的主要流程,场景将通过实例的开通、结构与数据的初始化、报表的开发、报表可视化等环节,用3个具体的应用场景来体验AnalyticDBMySQL版在新零售场景下的交互查询和ETL计算速度,以及通过DMS进行数据仓库数据报表开发的流程。提供的数据集是一个零售场景的模拟数据,包括客户信息、订单记录、货物信息、国家地域信息等内容,数据总量10GB,最大数据表记录数为5999万条。产品简介云原

    2022年9月17日
    5
  • 预测功率和电流之间的关系

    预测功率和电流之间的关系

    2021年11月19日
    61
  • linux通配符的用法_通配符怎么使用

    linux通配符的用法_通配符怎么使用Linux通配符(转)[@more@]通配符1、基本的通配符有哪些?·“?”可替代单个字符。·“*”可替代任意字符。·方括号“[charset]”可替代charset集中的任何单个字符。对最后一条做些解释。[cChH]通配符便可替代c或h字符的大小写形式。通配符集还能描述介于字符对之间的所有字符。如“[a-z]”就可以代替任意小写字母,而[a-zA-Z]则可替代任意字母。注意可替代的字符包括字符包…

    2022年9月19日
    2
  • 多元线性回归推导过程

    多元线性回归推导过程接上篇 人工智能开篇常用算法一多元线性回归详解 1 此次我们来学习人工智能的第一个算法 多元线性回归 文章会包含必要的数学知识回顾 大部分比较简单 数学功底好的朋友只需要浏览标题 简单了解需要哪些数学知识即可 本章主要包括以下内容数学基础知识回顾什么是多元线性回归多元线性回归的推导过程详解如何

    2025年8月1日
    4

发表回复

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

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