What type of Exception should I throw if the wrong type of object is passed?

ritch picture ritch · May 3, 2012 · Viewed 24.7k times · Source

What type of Exception should I throw if the wrong type of object is passed into my compareTo method?

ClassCastException?

Answer

adarshr picture adarshr · May 3, 2012

It would be IllegalArgumentException in a general sense when the passed in value is not the right one.

However, as @Tom's answer below suggests, it could also be a ClassCastException for incorrect types. However, I am yet to encounter user code that does this.

But more fundamentally, if you're using the compareTo with generics, it will be a compile time error.

Consider this:

public class Person implements Comparable<Person> {
    private String name;
    private int age;

    @Override
    public int compareTo(Person o) {
       return this.name.compareTo(o.name);
    }
}

Where do you see the possibility of a wrong type being passed in the above example?