Extremely simple concept of "exception handling" is the most powerful and most straight forward application of nature in any software.
Any living organism does its level best to adapt to changing circumstances around him, and to go ahead in life achieving its goal of survival. Many exceptional circumstances come in between to deter it from its goal, but organisms fight hard and tries to find the most optimal way to do the job at hand. Our daily lives are full of such experiences.
Exception handling too helps any software to work towards achieving its goal bypassing any difficulties encountered.
But one thing which is missing in softwares is something I wish really must be there. It goes like this :
Human beings keep learning from their mistakes, storing everything they encounter in their heads, and next time when such problem arises, they know how to avoid/solve it. But first time when it occurs, they know to avoid it from their normal habits (handling the exception using common base class Exception), but they learn afterwards that there is a specialized way of handling it (specialized exception class like FileDoesNotExistException ). They never go to a repair shop to get updated, though they take advises from friends. I hope you people are getting the gist of what I am trying to say.
A software too should keep learning without showing their users the message "Site under upgradation" and handling unknown issues using plain Exception class. New versions are published though, but I wish we should develop an all time running and self learning software which upgrades itself, without going down ever.