Multiple try codes in one block

后端 未结 6 1462
情书的邮戳
情书的邮戳 2020-12-04 12:59

I have a problem with my code in the try block. To make it easy this is my code:

try:
    code a
    code b #if b fails, it should ignore, and go to c.
    c         


        
6条回答
  •  -上瘾入骨i
    2020-12-04 13:32

    You'll have to make this separate try blocks:

    try:
        code a
    except ExplicitException:
        pass
    
    try:
        code b
    except ExplicitException:
        try:
            code c
        except ExplicitException:
            try:
                code d
            except ExplicitException:
                pass
    

    This assumes you want to run code c only if code b failed.

    If you need to run code c regardless, you need to put the try blocks one after the other:

    try:
        code a
    except ExplicitException:
        pass
    
    try:
        code b
    except ExplicitException:
        pass
    
    try:
        code c
    except ExplicitException:
        pass
    
    try:
        code d
    except ExplicitException:
        pass
    

    I'm using except ExplicitException here because it is never a good practice to blindly ignore all exceptions. You'll be ignoring MemoryError, KeyboardInterrupt and SystemExit as well otherwise, which you normally do not want to ignore or intercept without some kind of re-raise or conscious reason for handling those.

提交回复
热议问题