This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
The Throwable is already taken care of because the main method declares it with a throws.
The only real use for the finalize() method is to release resources bound by any "native" (usually C or C++) code; if you are on beginner's you have probably never heard of using "native" code! If you have any resources (eg file reading) bound by Java code, it is usual to close them in the same method they were opened in.
So you ought only to use the finalize() method for Campbell's Do-It-Yourself all-purpose excuse: "I only wanted to see what happens if . . ." That is an adequate excuse for almost anything short of corrupting or deleting system files! Try overriding a finalize() method to readand see what happens. Another thing covered by Campbell's all-purpose excuse
In a real-life application you would leave all invocations of finalize to the JVM, and never actually call it yourself. You can read about finalize here, but it is by no means easy to understand.