Is it not true that Try...Catch is merely a If..Else condition for 'any' error. IMHO it is not difficult to perform conditional checks for 'specific' errors.
No, it's not true. Throwing an exception breaks the normal program flow (but in a "structured" way nonetheless), and you can catch it at whatever place you want.
When you want to handle gracefully all error conditions, if you do it with return codes you can come to a point where your code is cluttered with error checking -> cumbersome, hard to read and maintain. With exceptions this is not the case, you just handle the error at the appropriate places. But with exceptions too, you could handle the error at any place it can appear, that's your choice and depends on the context (and actually even then exceptions are often clearer).
Ultimately, it is better to isolate and eliminate the trouble that would generate an error in the first place.
This, is pretty true. But there are 2 kinds of "errors": the conditions that should never ever happen and should ideally be detected by asserts. The other case, "normal errors" are the ones you seem to talk about. For these excpetions are fine. What will you do when you detect the error? Often you will have to report it to the calling function, that will report it to the callling funciton etc. Instead, just do some clean up and throw an exception, done.
SSwift, I am interested to know too why 'EntityExists' has come in the equation? Pretty bad example actually. Not to say you argue about the difficulty for Mark to implement it, and not the actual benefit you would have with exceptions. Your example:
But the problem is that all such a function does is look at the memory address specified, and sometimes, it can determine that that location is not an entity
In C++, where the issue is the same, you don't have neither exceptions automagically throw when accessing a deleted object. So what?
Exceptions are still there, and very very usefull I must say.
Now in Java, which uses a garbage collector, you simply can't have dandling pointers, a reference always points to a valid object (...and if I'm not mistaken Mark is seriously considering garbage collection). Is it enough to handle all errors? Surely not.
The dandling pointer error is simply not the worst that can happen, there are tons of application specific errors that can be gracefully handled via exception handling.
Question 1 is: would blitz benefit as much of exceptions? I don't know. Would be nice though.
Question 2: Won't it be disturbing for beginners? Probably.
Question 3: isn't it too complex for mark to implement it? Most certainly, this is not trivial.
Personnaly I don't think Mark will ever add a general purpose exception handling, but I'd be glad to be wrong.