According to the docs,
error handling in Swift does not involve unwinding the call stack, a process that can be computationally expensive
It's true that if swift stack unwinds then it will call all the destructor of all the objects that were allocated since the beginning of the block. But the converse might not be true. Just because the destructor was called for your object A
does not imply that swift stack unwinds. Also if you really wanted to test if it is stack unwinding you should try a more rigorous example