毫无例外地尝试每一行过早地破坏代码

Try every line without exception prematurely breaking code

我想编写一个 try-except 语句,它能够 运行 多个 try 语句而不破坏代码。

s = "hello, this is a string."

以上面的字符串为例:

ls = []
try:
    ls.append(s.split())
    ls.append(s.str.split()) # expected error
    ls.append(s.split(","))
    ls.append(s.split("i"))
except:
    pass

以上是我最初尝试的,但代码在第二个 try 语句处停止。

ls = []
try:
    ls.append(s.split())
except:
    pass
try:
    ls.append(s.str.split()) # expected error
except:
    pass
try:
    ls.append(s.split(","))
except:
    pass
try:
    ls.append(s.split("i"))
except:
    pass

最终,我能够使用上述代码将所有字符串附加到列表中。有没有比编写单独的 try-except 语句更好的方法?

据我了解,当 try 语句中发生错误时,它将立即转到 except 语句,这就是为什么您的代码在第二个 try 语句后不执行的原因。

虽然您的问题可能有更好的解决方案,但这是我针对您的问题的尝试:

ls = []
char=[' ',',','i']

for i in char:    
    try:
        ls.append(s.split(i))
        ls.append(s.str.split(i))
    except:
        pass
print(ls)



      

您可以使用 fuckit 模块。
使用 @fuckit 装饰器将您的代码包装在一个函数中:

import fuckit

@fuckit
def func():
    code a
    code b #if b fails, it should ignore, and go to c.
    code c #if c fails, go to d
    code d

或者你可以试试这个:

def a():
    try: # a code
    except: pass # or raise
    else: return True

def b():
    try: # b code
    except: pass # or raise
    else: return True

def c():
    try: # c code
    except: pass # or raise
    else: return True

def d():
    try: # d code
    except: pass # or raise
    else: return True

def main():   
    try:
        a() and b() or c() or d()
    except:
        pass