In Java there are
checked and
unchecked exceptions. It is a bit inaccurate to talk about "user defined exceptions", because you can create your own checked as well as unchecked exceptions. So, user defined exceptions are not necessarily checked exceptions.
The advantage of checked exceptions is that they provide safety: they force the programmer to think about error conditions that can happen, because you are required to handle the exception - either by adding a try-catch block, or adding a throws-clause to the method declaration.
On the other hand, there are people who think that checked exceptions are not needed. Checked exceptions are a feature that is unique to Java, no other programming language has the same concept.
For more details about how exceptions work in Java, see
The Java Tutorial - Exceptions.
Critique on checked exceptions:
Bruce Eckel: Does Java need Checked Exceptions? The Trouble with Checked Exceptions (about why C# does not have checked exceptions; Anders Hejlsberg, the designer of the C# language, explains what he thinks are issues with checked exceptions)
Avoiding checked exceptions And Shelemiah, welcome to JavaRanch!