当前位置: 首页> 财经> 产业 > 网页设计素材app_网站建设花费_最近新闻今日头条_北京seo服务商找行者seo

网页设计素材app_网站建设花费_最近新闻今日头条_北京seo服务商找行者seo

时间:2025/7/9 3:30:38来源:https://blog.csdn.net/qq_29567799/article/details/143578607 浏览次数:0次
网页设计素材app_网站建设花费_最近新闻今日头条_北京seo服务商找行者seo

声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。

3.2 异常捕捉分支结构

3.2.1 try-except-finally结构

try-except-finally是最基本的异常处理结构。它的具体形式如下:

'''
try:(如果有,则只能有一个)可能出现异常的代码块
except:(可以有多个)如果有异常则执行的代码块
finally:(可以没有,也可以有一个)无论是否有异常都会执行的代码块
'''

使用示例:

'''
捕捉自定义异常
'''
# 自定义异常如下:
class MyException(Exception):def __init__(self, code, message):self.code = codeself.message = messagedef __str__(self):return f"{self.code}: {self.message}"# 自定义一个除法函数如下:
def divide(a, b):if b == 0:raise MyException(400, "Division by zero")return a / b# try-except异常捕捉如下:
try:result = divide(4, 0)
except MyException:print("输入参数有误")  # 异常下可以打印自定义信息try:result = divide(4, 0)
except MyException as e:print(e)  # 也可以输出# try-except-finally异常捕捉:
try:result = divide(4, 0)
except MyException as e:print(e)
finally:print("执行结束")# try-except(多个)-finally异常捕捉:  
try:result = divide(4, 0)
except Exception:  # 无论是父类异常在前,还是子类异常在前,只要执行到一个except分支就不会再执行后面的except分支了。但是如果像这样父类异常在前,后在的except分支将是永远也执行不到的。print("出现异常了")
except MyException as e:print(e)
finally:print("执行结束")try:result = divide(4, 0)
except MyException as e:  # 实际上想要多分支捕捉异常时,要将小异常写在前面。print(e)
except Exception:print("出现异常了")
finally:print("执行结束")try:result = divide(4, 0)
except TypeError:print("类型错误")
except Exception:  # 如果之前的except分支没生效,才能执行到这个后面的except分支print("出现异常了")
finally:print("执行结束")

3.2.2 try-except-else-finally结构

try-except-else-finally结构是另一种常用的异常处理形式,else分支主要用来放没有异常时才执行的代码。具体结构如下:

'''
try:(如果有,则只能有一个)可能出现异常的代码块
except:(可以有多个)如果有异常则执行的代码块
else:(如果有,则只能有一个)没有异常才会执行的代码块
finally:(可以没有,也可以有一个)无论是否有异常都会执行的代码块
'''

使用示例:

class MyException(Exception):def __init__(self, code, message):self.code = codeself.message = messagedef __str__(self):return f"{self.code}: {self.message}"def divide(a, b):if b == 0:raise MyException(400, "Division by zero")return a / btry:result = divide(10, 3)
except MyException as e:print(e)
except Exception:print("出现异常了")
else:  # else分支一定要在所有except分支之后且在finally分支之前,并且只能有一个print("保留2位小数是{:.2f}".format(result))
finally:print("执行结束")

3.2.3 函数下带返回值的异常处理

上面的异常处理分支是可以放在函数体的位置的。如果在函数体且没有返回值(即return语句),则情况与上面是一样的;如果在函数体且有返回值,则有需要注意的地方。

函数下带返回值的异常处理的具体形式如下:

'''
def func():try:  # 如果try正常返回,则由于函数中止会将后续except与else中的代码屏蔽,但finally中的代码不会被屏蔽;可能出现异常的代码块return 1except: # 被屏蔽如果有异常则执行的代码块return 2else:  # 被屏蔽没有异常才会执行的代码块return 3finally:  # finally输出return 4 将会覆盖try中的return 1 ,若没有return 4 则输入return 3无论是否有异常都会执行的代码块return 4
'''

使用示例如下:

def divide(a, b):try:result = a / breturn resultexcept Exception:  # 实际上想要多分支捕捉异常时,要将小异常写在前面。print("异常了")return 2else:print("保留2位小数是{:.2f}".format(result))finally:print("执行结束")print(divide(10, 0))  # 如果try分支是有异常的,则正常执行except和finally分支
print(divide(10, 3))  # 如果try分支是正常返回的,因为有return,所以正常返回后不会执行except和else,所以打印结果是没有保留两位小数的# 如果finally分支是有返回值的,则无论正常或异常执行,最终都返回finally中的return结果
def divide(a, b):try:result = a / breturn resultexcept Exception:  # 实际上想要多分支捕捉异常时,要将小异常写在前面。print("异常了")return 2else:print("保留2位小数是{:.2f}".format(result))finally:print("执行结束")return 4print(divide(10, 0))  # 异常执行,执行except分支,再打印返回值为4;
print(divide(10, 3))  # 正常执行,结果被finally分支刷新为4,打印还是4;
关键字:网页设计素材app_网站建设花费_最近新闻今日头条_北京seo服务商找行者seo

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: