When it's a programmer error that causes the problem, it is good to have the program fail as quickly as possible so yes, in such cases it is a good practice.
If it's a user error, such situations are where it's not good to throw errors. It's best there to be broad in what functions accept, and narrow in what they return.
No, that wouldn't be of much use. That does exactly the same as when you press the stop button on your web browser, so it will stop images from continuing to download, or new windows from loading, but not much else.