I'm making a custom class that implements comparable, and I'd like to throw some kind of exception if somebody tries to compare two objects that are not comparable by my definition. Is there a suitable exception already in the API, or do I need to make my own?
Not that I know of.
The most accurate Exception to represent this is probably an IllegalArgumentException
:
http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html
You should probably also be implementing Comparable<CustomClass>
which will prevent callers from providing an instance of the wrong class.
Consider ClassCastException, it is what Java Collection Framework throws for such situations. This is what happens when we try to add a non-comparable Test1 to a TreeSet
Exception in thread "main" java.lang.ClassCastException: Test1 cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(TreeMap.java:1188)
at java.util.TreeMap.put(TreeMap.java:531)
at java.util.TreeSet.add(TreeSet.java:255)
at java.util.AbstractCollection.addAll(AbstractCollection.java:334)
at java.util.TreeSet.addAll(TreeSet.java:312)
at java.util.TreeSet.<init>(TreeSet.java:160)
at Test1.main(Test1.java:9)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With