Chapter 6. Error Handling

You will always encounter errors in the real world. How you handle them helps show the quality of your code.

Java has its roots in embedded systems—software that runs inside specialized devices, such as the handheld computers, cellular phones, and fancy toasters that we might consider part of the internet of things (IoT) these days. In those applications, it’s especially important that software errors be handled robustly. Most users would agree that it’s unacceptable for their phone to crash on a regular basis or for their toast (and perhaps their house) to burn because some software failed. Given that we can’t eliminate the possibility of software errors, recognizing and dealing with application-level errors methodically is a good step in the right direction.

Some languages leave the responsibility for handling errors entirely with the programmer. The language itself provides no help in identifying error types and no tools for dealing with them easily. In the C language, for example, functions generally indicate a failure by returning an “unreasonable” value (like the idiomatic -1 or a null). As the programmer, you must know what constitutes a bad result and what it means. It’s often awkward to work around the limitations of passing error values in the normal path of data flow.1 An even worse problem is that certain types of errors can legitimately occur almost anywhere, and it’s slow and costly to test for them explicitly at every point in the software. ...

Get Learning Java, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.