我需要創建一個方法來按員工姓名查找員工。有三種可能的解決方案來執行此操作,如下所示:返回java.util.Optional或拋出(Checked/Unchecked)異常
- 員工findEmployeeById(long empId)拋出NoSuchEmployeeCheckedException;
- 可選findEmployeeById(long empId);
- 員工findEmployeeById(long empId)拋出NoSuchEmployeeUnCheckedException;
如果ID在我的倉庫匹配的第一個方法將返回Employee的一個實例,否則拋出檢查異常NoSuchEmployeeCheckedException
第二種方法將返回java8的可選實例的實例,而沒有異常拋出。
最後一種方法與第一種方法類似,但拋出UnCheck異常的實例NoSuchEmployeeUnCheckedException
而不是檢查異常。
我已經閱讀了StackOverFlow關於檢查與未檢查的異常的多個帖子。我仍然不確定如何正確使用它們。
約書亞布洛赫在「有效的Java」說,
使用檢查可恢復條件和運行時異常的編程錯誤(第58項中的第2版)
- 是在findEmployeeById可恢復條件異常?
- 我需要使用Optional還是拋出異常?
- 哪個解決方案最好?
以上都不是,返回Employee列表。該查詢可以返回多行,因爲多個員工可以具有相同的名稱。如果沒有匹配返回空列表 –
不需要考慮實際的邏輯 –