簡體   English   中英

如果傳遞了錯誤的對象類型,我應該拋出什么類型的異常?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM