吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1262|回复: 10
收起左侧

[讨论] 求Python的try/except优雅写法,或其它方式实现这功能

  [复制链接]
lizy169 发表于 2022-12-26 09:07
[Python] 纯文本查看 复制代码
# 目的是当程序块1出现异常,就执行程序块2,当程序块2再出现异常就执行程序块3,当程序块3还出现异常,就执行程序块4
# 以下方式可满足这个目的,还有没有其它优雅的写法,或其他方式来实现这个
a = '1'
b = '2'
c = '3'
d = '4'
try:
    try:
        try:
            print(a + 1)  # 程序块1
        except:
            print(b + 1)  # 程序块2
    except:
        print(c + 1)  # 程序块3
except:
    print(d + 1)  # 程序块4

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Helli 发表于 2022-12-26 09:23
你的except写的太宽泛了,基本在项目中起不到什么作用

免费评分

参与人数 1吾爱币 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

hjlarry 发表于 2022-12-26 09:46
假设在一个函数里,就可以用return来解决嵌套的问题,例如
[Python] 纯文本查看 复制代码
def test_func():
       try:
            return a+1
       except:
            pass
       try:
            return b+1
       ....

免费评分

参与人数 1吾爱币 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

xzqsr 发表于 2022-12-26 09:51
[Python] 纯文本查看 复制代码
def fun():
    # 1
    try:
        A1()
        return
    except:
        pass

    # 2
    try:
        A2()
        return
    except:
        pass

    # 3
    try:
        A3()
        return
    except:
        pass

免费评分

参与人数 1吾爱币 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

apull 发表于 2022-12-26 10:30
不晓得这个方法可以不可以。

[Python] 纯文本查看 复制代码
aa = "1234"
flag = False
for i in aa:
    try:
        print(i + 1)  # 程序块1
        flag = True
    except:
        print("Error " + i)
        
    if flag:
        break

print("End")

免费评分

参与人数 1热心值 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

cloud2010 发表于 2022-12-26 10:32
[Python] 纯文本查看 复制代码
def f1():
    pass

def f2():
    pass

def f3():
    pass

def f4():
    pass

fs = (f1, f2, f3, f4)
for f in fs:
    try:
        f()
        break
    except:
        pass

免费评分

参与人数 1吾爱币 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

甜萝 发表于 2022-12-26 10:45
[Python] 纯文本查看 复制代码
a = '1'
b = '2'
c = '3'
d = '4'

try:
    print(a + 1)  
except:
    try:
        print(b + 1)  
    except:
        try:
            print(c + 1)  
        except:
            print(d + 1) 

免费评分

参与人数 1热心值 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

whoami233 发表于 2022-12-26 13:46
Python 3.11 提供了一个异常组,ExceptionGroup
安卓iphone 发表于 2022-12-26 14:05
whydontknow 发表于 2022-12-26 09:25
为什么要加这么多try?非要加不可的话也建议except不要写这么宽泛

别人是求组你问为啥

免费评分

参与人数 1热心值 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

 楼主| lizy169 发表于 2022-12-26 14:40
paypojie 发表于 2022-12-26 10:45
[mw_shl_code=python,true]a = '1'
b = '2'
c = '3'

这个思路更简洁易懂,谢谢了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表