[英]What type of Exception should I throw if the wrong type of object is passed?
如果將錯誤類型的對象傳遞給我的compareTo方法,我應該拋出什么類型的Exception?
ClassCastException異常?
當傳入的值不正確時,一般意義上是IllegalArgumentException
。
但是,正如@ Tom的答案所示 ,對於不正確的類型,它也可能是ClassCastException
。 但是,我還沒有遇到執行此操作的用戶代碼。
但更重要的是,如果你將compareTo
與泛型一起使用,那將是一個編譯時錯誤。
考慮一下:
public class Person implements Comparable<Person> {
private String name;
private int age;
@Override
public int compareTo(Person o) {
return this.name.compareTo(o.name);
}
}
您在哪里看到上述示例中傳遞錯誤類型的可能性?
不出所料, API文檔指定了在這種情況下拋出的異常。
ClassCastException - 如果指定對象的類型阻止將其與此對象進行比較。
假設您正在使用泛型,如果有人嘗試使用原始類型,反射或其他一些不安全的技術來調用您的方法,您將自動獲得此異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.