2017-06-29 6 views
0

J'essaie de comprendre le gestionnaire de contexte. Peuples wtite qu'il est équivalent à try...finally bloc.Valeur de retour dans sauf le bloc du gestionnaire de contexte

Est-ce que la capacité existe écrit le code suivant avec le gestionnaire de contexte?

def func(): 
    try: 
     do_something1() 
     ... 
    except Exception: 
     return False 
    do_something2() 
    return True 

Un autre mots, je voudrais stoped de excecution func si exception levée.

def func(): 
    with context() 
     do_something1() 
     ... 
    do_something2() 
    return True 

Répondre

0

Do:

class MyContextManager(object): 
    def __enter__(self): 
     do_something1() 
    def __exit__(self, type, value, traceback): 
     do_something2() 

with MyContextManager(): 
    func() 
+0

Vous appelez '' do_something2' et do_something1' dans 'MyContextManager'. C'est très étrange. J'ai ajouté un exemple à ma question de ce que je veux. – Liamax