No, backtracking and exception handling are not the same thing. A key difference is that a control frame for a try block is always removed when the try block is finished. But an control frame for a backtrack block remains in effect even after the backtrack block has been exited successfully. Even after the function that created the backtrack block returns, that control frame can catch the exception and resume the function that returned earlier on a different branch.