I have some code thats not working(which is a common occurrence for me), but because I am not getting an errors it just continues to run with bad data. The problem I think is it keeps telling me to wrap parts of my code in try/catch blocks(my tests are basic, I just output a message in the try area and if it gets outputted I assume all went well. All does not seem well in my code). I understand in production, putting a try/catch statement helps the code to continue to run but its making me troubleshooting difficult because I’m trying to troubleshoot that section of my code.
Is there a way around this so I can actually see when something fails within the try area?
Here’s a sample of my code:
try {
ByteArrayInputStream baos_back = new ByteArrayInputStream(message);
ObjectInputStream oos_back = new ObjectInputStream(baos_back);
i = oos_back.readInt();
d = oos_back.readDouble();
list_of_ints = (int[]) oos_back.readObject();
oos_back.reset();
baos_back.reset();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
As I mentioned in my comment, you can catch all exceptions in Java with a blanket catch statement:
This will catch every
Exceptionthrown in thetryblock, and the only things it won’t catch areErrors.In practice, you will want to limit the types of exceptions you catch, and catch more specific exceptions, so you can exception chain as follows:
The above also makes it known that you expect some types of exceptions to occur, and then a big blanket catch-all statement that might catch things you didn’t expect.
You can also log exceptions to a file or something else, rather than output them to standard out as this code does right now. A basic logging utility is
java.util.logging.I still recommend learning to use a debugger though. Debuggers can do a lot of things like halt program execution whenever an exception is thrown, and allow you to inspect the values of variables and fields at any point in the program’s execution. If you use Eclipse or Netbeans or IntelliJ or other IDEs, they have debuggers. If you use the command line, there is the
jdbcommand-line java debugger.