Q:

What is the loss without throws in java?

I have googled and read many answers on try,catch and throws. I still cannot get my question answered. 
My question is, we try a code and if exception occurs, the execution terminates right away and catch takes care of the rest. In fact we define the scope of exception by declaring a class (along instance) in the parenthesis catch(IOException e)
This further acts as per our code within the block..say, print the error
{
     e.printStackTrace();
}

Whereas, in case of throws, we do the same what we do in catch, personally declare the classes within parenthesis after throws which we expect to be the source of exception we expect. 
.
.
}
catch(Exception e)
{
     e.printStackTrace
}

And if it occurs, execution terminates, gets back to the caller and ultimately executes try catch itself. 
So I really can't understand as to what makes throws so special. (Kindly do not confuse with complex answers. You can assume I am a beginner and I am sure, a preacher knows how to make ANYone understand the concepts).

A:

throws is not strictly necessary from a language design point of view. In fact, a lot of languages don't use it.
The requirement to define the (checked) exceptions thrown by a method using throws was a choice made by the Java creators. It's there to force you, the developer, to be more careful about what you're doing. The idea is that you're supposed to do one of two things with exceptions:

Explicitly handle the exception, by catching it, or
Explicitly NOT handle it and allow the exception to bubble up to the parent method, which has to make the same decision about handle vs not handle

By doing this, you omit the third possibility: "Just ignore everything and hope nothing breaks", which the Java creators presumably deemed dangerous.
(The third possibility can still be done using non-checked exceptions. This goes against what the Java creators intended, but is what a lot of people and APIs ended up doing anyway.)

