天天看點

巧用Using跳過異常捕獲

前言

    這裡主要說一個使用using躲過異常的小技巧。

    我原來就遇到過類似的問題好幾次了,也沒想到辦法,直接有一天,調試得實在受不了了,才認真想了以下的解決方案。

問題

    原來的代碼是這樣的:

    這是一個抽象的指令類,這裡隻貼出了這個問題的主要的邏輯:需要在onexecute方法執行之前設定_isexecuting的值為true,然後執行onexecute方法,然後不管是否出現異常,都在執行完畢後,設定為false。子類實作這個類實作onexecute方法來編寫自己真正的執行代碼。這時比較麻煩的一個問題是:在代碼編寫階段,當子類的onexecute方法内部出現異常時,visual studio都會直接把錯誤給定在這個類上,如下:

子類:

出現異常:

巧用Using跳過異常捕獲

    調試的過程中,無法直接定位到子類,當代碼很多時,找實作這個基類的子類是很煩人的事。而且找到了它以後,打上斷點,還得重新運作一遍來運作同樣的bug路徑。時間就是這樣浪費的,調試得很崩潰……

解決

    需要重構了基類的代碼,但是由于execute方法的設定_isexecuting字段的邏輯不能改變,是以并不簡單。靈光一閃,有了以下的實作:

巧用Using跳過異常捕獲

後話

    因為我不隻一次遇到過這個問題,是以我猜測肯定還會有朋友會遇到同樣的問題。是以就把這個小問題冒昧的發在了首頁。希望和大家分享。另外,如果你有更好的方法,可以用力的拍我。 :)