差異處
這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
java:effective_java:exceptions:favor_the_use_of_standard_exceptions [2022/04/13 23:36] tony 建立 |
java:effective_java:exceptions:favor_the_use_of_standard_exceptions [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 6: | 行 6: | ||
* IndexOutOfBoundsException: 輸入參數超過可接受的範圍大小,就會使用它。 | * IndexOutOfBoundsException: 輸入參數超過可接受的範圍大小,就會使用它。 | ||
* IllegalArgumentException: 輸入參數不合法,就會使用它,但請撇除上面2個情境。 | * IllegalArgumentException: 輸入參數不合法,就會使用它,但請撇除上面2個情境。 | ||
- | * llegalStateException: 當method在不適當的時候被呼叫,就會使用它。其實以物件命名想表達的是物件可能處於error state而無法正常工作,因而拋出llegalStateException。有的時候,這個例外我也有看過被用在絕對不可能發生的情況下去拋出llegalStateException;不過應該要盡量避免這種情境,因為單元測試可能寫不出來。 | + | * llegalStateException: 當method在不適當的時候被呼叫,就會使用它。其實以物件命名想表達的是物件可能處於error state而無法正常工作,因而拋出llegalStateException。有的時候,這個例外我也有看過被用在絕對不可能發生的情況下去拋出llegalStateException;不過應該要盡量避免這種情境,因為單元測試可能寫不出來。StackOverflow有人對javadoc和effective java描述的使用情境認為有所不同,有興趣可以看[[https://stackoverflow.com/questions/12698275/whats-the-intended-use-of-illegalstateexception|這裡]],我認為effective java描述的情境可應用的場合會比javadoc廣泛拉。 |
* UnsupportedOperationException: 呼叫了不支援的method,就會使用它。我想這個例外,應該也適用於某一個method接收http method,但不支援PUT的時候,client卻傳了PUT的情境吧? | * UnsupportedOperationException: 呼叫了不支援的method,就會使用它。我想這個例外,應該也適用於某一個method接收http method,但不支援PUT的時候,client卻傳了PUT的情境吧? | ||
* ConcurrentModificationException: 如果某個method偵測到multiple threads存取時,就有可能會拋這個例外。書中是說,這個是提示意味不一定準確,而我也沒拋過這個例外,因為通常會去避免發生這種情境,而不會做複雜的檢查。 | * ConcurrentModificationException: 如果某個method偵測到multiple threads存取時,就有可能會拋這個例外。書中是說,這個是提示意味不一定準確,而我也沒拋過這個例外,因為通常會去避免發生這種情境,而不會做複雜的檢查。 | ||
- | 最後就是這個item也有提到不要直接使用Exception、Throwable、RuntimeException或Error,我認為其實是要呼應Item 73: Throw exceptions appropriate to the abstraction。 | + | 最後就是這個item也有提到不要直接使用Exception、Throwable、RuntimeException或Error,我認為其實是要呼應[[java:effective_java:exceptions:Throw_exceptions_appropriate_to_the_abstraction|Item 73: Throw exceptions appropriate to the abstraction]]。 |
===== Note ===== | ===== Note ===== | ||
Effective Java第三版Item 72。 | Effective Java第三版Item 72。 |