Kody Wright wrote:...why would I need to throw an exception if the catch block will automatically catch the exception anyway?
One thing to consider is that try/catch blocks allow you to separate unusual circumstances (exceptions) from the rest of your code. Throwing an exception is a way of saying, "I need to break out of the regular process because something unusual happened."
Another thing to consider is that catch statements can be very specific in the types of exceptions they catch. You might be used to seeing catch(Exception e), which will catch
any type of Exception (including its subtypes). This might have you thinking that all exceptions end up getting caught (handled) in the same place. But, for example, catch(IOException e) will only catch an IOException (and its subtypes). So being more specific in the type of Exceptions caught allows your code to throw different types of exceptions to be handled differently in different catch blocks.
For more information and examples, see
Java Tutorial - Advantages of Exceptions.