473,545 Members | 2,084 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

An Introduction to Exceptions - Ch. 3

RedSon
5,000 Recognized Expert Expert
Chapter 3: What are the most common Exceptions and what do they mean?
As we saw in the last chapter, there isn't only the standard Exception, but you also get special exceptions like NullPointerExce ption or ArrayIndexOutOf BoundsException. All of these extend the basic class Exception.

In general, you can sort Exceptions into two groups: Checked and unchecked Exceptions. Checked Exceptions are checked by the compiler at compilation time. Most Exceptions, that you will work with to control the flow of your program will be checked Exceptions.
Unchecked Exceptions are thrown at runtime and often mean, that you've made a mistake somewhere but the compiler couldn't know that.
All unchecked Exceptions extend RuntimeExceptio n, while all checked Exceptions don't.

There are a few Exceptions, that you will get ever so often. I've tried to make a list of the most common ones and to explain, what you can do to find, where it comes from. You should always look at the message you get from the compiler or at runtime - it will give you the line, in which it encountered the error.
  • ArrayIndexOutOf BoundsException

    This Exception, as most of them do and all of them should, describes what has gone wrong very well - some Array index is out of the given bounds. So, for example, you have an Array like this
    Expand|Select|Wrap|Line Numbers
    1. int [] array = new int[3]
    and you are trying to access a nonexistent element, maybe like this
    Expand|Select|Wrap|Line Numbers
    1. array[3]
    This is incorrect, as arrays start with element 0.

    Often you get this error, when using a for-loop which runs to often. Check the given line and find out, why it's trying to find an element, that doesn't exist.

    The ArrayIndexOutOf BoundsException is a unchecked Exception.
  • ClassCastExcept ion

    If you encounter a ClassCastExcept ion, there is an invalid cast somewhere. For example, the following code throws a ClassCastExcept ion:

    Expand|Select|Wrap|Line Numbers
    1. public class Exceptions {
    2.     public static void main(String[] args) {
    3.         // Anything extends java.lang.Object directly or indirectly and is therefore an Object
    4.         Object testClass1 = new Class1("1");
    5.         Object testClass2 = (Class2) testClass1;
    6.     }
    7. }
    8.  
    9. class Class1
    10. {
    11.     String x;
    12.  
    13.     public Class1(String x)
    14.     {
    15.         this.x = x;
    16.     }
    17. }
    18.  
    19. class Class2
    20. {
    21.     int x;
    22.  
    23.     public Class2(int x)
    24.     {
    25.         this.x = x;
    26.     }
    27. }
    28.  
    It does so, as it can not cast a Class1 Object to a Class2 Object. If you have created Classes yourself, normally you will have to tell the compiler how to cast them to another Class yourself:

    Expand|Select|Wrap|Line Numbers
    1. public class Exceptions {
    2.     public static void main(String[] args) {
    3.         // Now we've defined the cast ourselves and don't need to define the new Objects as Objects.
    4.         Class1 testClass1 = new Class1("1");
    5.         Class2 testClass2 = testClass1.toClass2();
    6.  
    7.         // If we do want to define them as Objects, it would work like this:
    8.         Object testClass1_2 = new Class1("1");
    9.         Object testClass2_2 = ((Class1) testClass1_2).toClass2();
    10.     }
    11. }
    12.  
    13. class Class1
    14. {
    15.     String x;
    16.  
    17.     public Class1(String x)
    18.     {
    19.         this.x = x;
    20.     }
    21.  
    22.     public Class2 toClass2()
    23.     {
    24.         return new Class2(Integer.parseInt(x));
    25.     }
    26. }
    27.  
    28. class Class2
    29. {
    30.     int x;
    31.  
    32.     public Class2(int x)
    33.     {
    34.         this.x = x;
    35.     }
    36. }
    37.  
    The ClassCastExcept ion is a unchecked Exception.
  • ClassNotFoundEx ception

    This means, that a certain class cannot be found. Normally this happens, when you compile classes and try to run them without having compiled other classes, which are needed. It can also mean, that the needed classes are compiled, however not up to date. Try recompiling everything you need.
  • FileNotFoundExc eption

    When you try to access a File, it may not exist. This code will throw a FileNotFoundExc eption:

    Expand|Select|Wrap|Line Numbers
    1. import java.io.File;
    2. import java.io.FileInputStream;
    3. import java.io.FileNotFoundException;
    4.  
    5. public class Exceptions {
    6.     public static void main(String[] args) throws FileNotFoundException {
    7.         File file = new File("hello.txt");
    8.         FileInputStream iStream = new FileInputStream(file);
    9.     }
    10. }
    11.  
    WARNING: Please don't have a main method, which throws Exceptions. This should only be done for demonstration purposes. Catch and handle the Exceptions instead. A better way to handle this kind of situation would be:

    Expand|Select|Wrap|Line Numbers
    1. import java.io.File;
    2. import java.io.FileInputStream;
    3. import java.io.FileNotFoundException;
    4.  
    5. public class Exceptions {
    6.     public static void main(String[] args){
    7.         try
    8.         {
    9.             File file = new File("hello.txt");
    10.             FileInputStream iStream = new FileInputStream(file);
    11.         }
    12.         catch(FileNotFoundException fnfe)
    13.         {
    14.             System.err.println(fnfe);
    15.         }
    16.     }
    17. }
    18.  
    The ClassNotFoundEx ception is a checked Exception.
  • IOException: The Input-Output-Exception is an Exception, which is very commonly used. The FileNotFoundExc eption is one these and can therefore be caught with:

    Expand|Select|Wrap|Line Numbers
    1. catch(IOException ioe) {
    2.    //...
    3. }
    4.  
    The following code will throw a IOException:

    Expand|Select|Wrap|Line Numbers
    1. public static void throwIOException() throws IOException
    2. {
    3.    try 
    4.    {
    5.        OutputStream oStream = new FileOutputStream(new File("")); 
    6.       oStream.close(); 
    7.       oStream.write(0); 
    8.    }
    9.    // The FileNotFoundException extends IOException - however to get a basic 
    10.    // IOException, we do this: 
    11.    catch(IOException fnfe) 
    12.    {
    13.       IOException ioe = new IOException(); 
    14.       ioe.initCause(fnfe);
    15.       throw ioe; 
    16.     }
    17. }
    18.  
    This is also an Example of two things:
    • A wrapped exception - the try-catch-block catches one exception and throws another. This can be very useful in some cases.
    • Creating a chained Exception. This means, the Exception carries information about where it comes from (i.e. the "FileNotFoundEx ception"). The adding of this information is done with the line ioe.initCause(f nfe); and it can be retained with

      Expand|Select|Wrap|Line Numbers
      1. catch(IOException ioe) {
      2. {
      3.    System.err.println(ioe); 
      4.    System.err.println("Cause: " + ioe.getCause()); 
      5. }
      6.  
    The IOException is a checked Exception.
  • NullPointerExce ption
    A NullPointerExce ption is thrown, when an Object has been defined, but not declared when you try to access it. To use the last example again, this code will throw a NullPointerExce ption:
    Expand|Select|Wrap|Line Numbers
    1. import java.io.File;
    2. import java.io.FileInputStream;
    3. import java.io.FileNotFoundException;
    4.  
    5. public class Exceptions {
    6.     public static File file;
    7.     public static void main(String[] args){
    8.         try
    9.         {
    10.             FileInputStream iStream = new FileInputStream(file);
    11.         }
    12.         catch(FileNotFoundException fnfe)
    13.         {
    14.             System.err.println(fnfe);
    15.         }
    16.     }
    17. }
    18.  
    Check, if you have declared the Object, which you are trying to use in the Line given with the exception.
    The NullPointerExce ption is a unchecked Exception.
You may of course face an exception not mentioned in this list. Often, just checking the line mentioned by the Exception and thinking about the name of the exception leads you to the solution.

Back to chapter 2 or Continue to chapter 4
Attached Files
File Type: zip Chapter3.zip (1.5 KB, 173 views)
Dec 18 '07 #1
0 6489

Sign in to post your reply or Sign up for a free account.

Similar topics

14
2067
by: Cletis Tout | last post by:
http://www.codeproject.com/cpnet/introtomono1.asp Introduction to Mono - Your first Mono app By Brian Delahunty The first in a series of articles about Mono. This article explains how to install Mono and shows how to compile your first Cross Platform application.
14
2810
by: Alf P. Steinbach | last post by:
Not yet perfect, but: http://home.no.net/dubjai/win32cpptut/special/pointers/ch_01.pdf http://home.no.net/dubjai/win32cpptut/special/pointers/ch_01_examples.zip To access the table of contents, use the "Bookmarks" tab in Adobe Acrobat. Comments, corrections, praise, nits, etc., are still welcome!
12
3571
by: Xah Lee | last post by:
Of Interest: Introduction to 3D Graphics Programing http://xahlee.org/3d/index.html Currently, this introduction introduces you to the graphics format of Mathematica, and two Java Applet utilities that allows you to view them with live rotation in a web browser. Also, it includes a introductory tutorial to POV-Ray.
2
4282
by: Jeroen | last post by:
We are experiencing a tuff-to-debug problem ever since we introduced a WebBrowser control into our failry large application. I'm not sure if the problem description below contains enough details, so if I need to elaborate on something please ask for it. We have a UserControl with a WebBrowser on it. This UserControl is instantiated a few...
5
6264
by: r035198x | last post by:
Setting up. Getting started To get started with java, one must download and install a version of Sun's JDK (Java Development Kit). The newest release at the time of writting this article is JDK 6 downloadable from http://java.sun.com/javase/downloads/index.jsp. I will be using JDK 5(update 8)
0
3880
by: r035198x | last post by:
Inheritance We have already covered one important concept of object-oriented programming, namely encapsulation, in the previous article. These articles are not articles on object oriented programming but on Java programming but I will cover all the important aspects of object oriented programming as Java has full support for object-oriented...
0
5321
RedSon
by: RedSon | last post by:
Chapter 2: How to handle Exceptions When you call a program, sometimes you get a message about an Unhandled exception type. This means, that something throws (or might throw) an Exception, but the compiler doesn't know, what to do then. You can deal with this in two different ways: Throw the Exception further (pass it on to some other...
0
3826
Nepomuk
by: Nepomuk | last post by:
Chapter 1: What is an Exception? Imagine, you want to write a program for calculating. You start, it works fine, you can add, subtract, multiply and divide. Then there's a question: What about the division by zero? Say, your division method looks like this: public double div(double a, double b) { return a/b; } You try:
0
7470
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
0
7405
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
1
7428
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
7760
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
1
5334
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
4949
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
1
1887
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1019
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
709
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.