in reply to Propagaing error from deeply nested calles
Bottom-line shortcut: "yes, Exceptions are the proper way to handle this, in any programming language. That's one reason why they were invented." Exceptions are, after all, "exceptional." So, instead of burdening our code with explicit tests to see if something went wrong (and, bearing the price of failure if anyone anywhere gets their tests mixed up ...), we throw a burning torch into the air and trust that someone is prepared to catch it. Works beautifully. The "exceptional" situation is neatly taken care of, and everyone else gets to ignore it (as they properly should).