Colab

def B(x):
    if x<0:
        raise LogicError("I dont like negative numbers", x)
    else:
        return x
    
def A(x):
    try:
        print(f"Starting A({x})")
        return B(x)
    finally:
        print(f"finished A({x})")

for i in [-1, 0, 1]:
    try:
        y=A(i)
        print(f"A({i})={y}")
    except Exception as x:
        print(f"failed running A({i}): ", )
        
        

Starting A(-1)
finished A(-1)
failed running A(-1): 
Starting A(0)
finished A(0)
A(0)=0
Starting A(1)
finished A(1)
A(1)=1