我正在创建一个实现可比较的自定义类,如果有人试图比较两个我的定义无法比较的对象,我想抛出某种异常。 API中是否已存在合适的异常,或者我是否需要自己创建?
答案 0 :(得分:9)
不是我知道的。
表示此问题的最准确的异常可能是IllegalArgumentException
:
http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html
你可能也应该实现Comparable<CustomClass>
,这会阻止调用者提供错误类的实例。
答案 1 :(得分:2)
考虑ClassCastException,它是Java Collection Framework为此类情况抛出的内容。当我们尝试将不可比较的Test1添加到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)