本文不區分語言,只為記錄一次有收獲的面試。
面試官:什么情況下用到try-catch?
程序員:代碼執行預料不到的情況,我會使用try-catch。
面試官:什么是預料不到的情況呢?
程序員:比如我要計算a除以b,但是b是變量,如果b等於0程序就會出錯,所以我會將程序代碼放在try中。
面試官:還有其他情況會遇到try-catch嗎?
程序員:我會在上傳文件時使用try-catch,之前做過一個網站有上傳文件的功能,線下測試的時候沒有問題,但是那個線上環境是一個僅有100M的虛擬空間,除了代碼剩余的空間所剩無幾,所以網站上線后沒過多長時間上傳文件就在catch中報錯,空間不足。
面試官:還有其他場景會用到try-catch嗎?
程序員:我還會在使用數據庫事務的時候使用try-catch,如果事務執行成功就提交事務,如果事務執行失敗就由catch提示錯誤並回滾事務。還有就是在使用curl方式訪問其他網絡地址的時候會用到,如果網絡訪問出錯或者網絡訪問超時就在catch中拋出錯誤。還有就是之前寫winfrom軟件的時候調用攝像頭和打印機,會使用try-catch。
面試官:那我可否歸納為當程序需要打開一個資源,使用完后需要關閉的情況下,需要使用try-catch。就想你上面說到的文件上傳寫入,數據庫事務的提交,還有攝像頭和打印機的使用,都是這種情況。
除了上面所說的情況,你還有其他場景會用到try-catch嗎?
程序員:還有就是我的程序調用其他人寫的程序接口的時候,我不敢保證別人的接口返回的都是約定好的返回值。所以如果接口返回約定好的返回值,那么try中的程序正常執行,如果意料之外catch拋出錯誤。
