python - Python:处理链异常的正确方法
问题描述
我想寻找一种更好的方法来处理以下异常,
def fun(i, j, k, l):
try:
do_something_1(i)
except TimeoutException as f:
try:
do_something_2(j)
except TimeoutExeption as e:
try:
do_something_3(k)
except TimeoutExeption as e:
try:
do_something_4(l)
except TimeoutExeption as e:
raise Exception
基本思想是尝试某事,如果它不起作用,则尝试下一件事,依此类推,直到它得到它想要的或失败。但它必须遵循执行顺序。
我怎样才能让它变得更好?
解决方案
使用 for 循环:
for fct in [do_something_1, do_something_2, do_something_3]:
try:
fct(i)
break
except Exception:
continue
else:
raise Exception
推荐阅读
- mysql - 如何使用 Ruby mysql2 插入 NULL?
- linux - rm: 无法删除 'test/deployment/sandbox-v2/tmp/dns': 权限被拒绝
- r - R中的多个绘图在一个页面中
- go - 无法启动 shell: 无法启动 pty: fork/exec /usr/bin/sh: operation not allowed
- linux - 将文件从 linux 系统下载到您的家用计算机
- php - 某些路由是否可以使用 vue 路由器而其他路由使用 laravel 路由器?
- android - NoSuchMethodError:类'_InternalLinkedHashMap
' 没有具有匹配参数的实例方法 'map'。(扑) - javascript - JavaScript Array 对象未打印到控制台
- javascript - Django REST Framework 数据表中的外键值
- javascript - 用括号表示法构建一个新的嵌套对象