java“不可比”的例外?

时间:2013-03-08 04:04:24

标签: java exception comparable

我正在创建一个实现可比较的自定义类,如果有人试图比较两个我的定义无法比较的对象,我想抛出某种异常。 API中是否已存在合适的异常,或者我是否需要自己创建?

2 个答案:

答案 0 :(得分:9)

不是我知道的。

表示此问题的最准确的异常可能是IllegalArgumentExceptionhttp://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)