3 ms·
Doesn't that mean typing try a million times instead of putting potentially throwable calls inside one try block and a bunch of different catch handlers? I won
by 72deluxe 11y ago
Doesn't that mean typing try a million times instead of putting potentially throwable calls inside one try block and a bunch of different catch handlers?
I wonder why they insist on that. Perhaps it is easier to parse?
- lobster_johnson 11y agoI suspect it's useful to visually signal that the call can fail, and make it obvious what's happening; after all, the "throws" annotation is at the target site, not on the caller end. You need to prefix anything that throws with a "try": func mightThrow() throws { try mightAlsoThrow(); } Other than that, it looks exactly like C++ exceptions: Propagation happens along the chain of functions marked as "throws", until a "catch" handler intercepts it. "try" is an expression, by the way, so you can do things like: let line = try file.readline() There's also a "try!" statement that throws a runtime exception if the inner statement throws.