For software development, we can distinguish two different kinds of errors:
Compile errors appear during compile and are thrown by the Java compiler. A typical example for this type of error is an improperly typed method or class name. This type of error can be found very easily because the compiler checks the code and presents a meaningful message.
There are also runtime errors, which cannot be found by the compiler; thus they appear only during runtime. An example might be a loop stepping through an array with a size smaller than the loop variable. These kinds of errors are typically fixed using a debugger.