使用正則表達式在VS中批量移除 try-catch


使用正則表達式在VS中批量移除 try-catch

前言

try-catch 意為捕獲錯誤,一般在可能出錯的地方使用(如調用外部函數或外部設備),以對錯誤進行正確的處理,並進行后續操作而不至於程序直接中斷

但需要注意的是,當 try-catch 嵌套時,外部try-catch將無法對內部 try-catch 捕獲的錯誤進行進一步的處理。因此在框架的使用中,我理解的是:編寫人員僅需要對可以考慮到的,可能出錯的地方進行處理即可,而沒必要每個方法都使用 try-catch 包裹——對於未考慮到的意外情況,統統扔給全局的異常處理即可。這樣便於統一的全局日志,也可在上帝的視角給出較為全面的錯誤堆棧信息(如什么請求引起的錯誤,輸入的參數是什么等等)。

操作

現在項目中幾乎所有的方法都被 try-catch 包裹,為了將既有的代碼中的 try-catch 統一去除,我使用了如下的正則表達式在 Visual Studio 2019 中進行替換(為了保險起見,應逐個文件替換,替換后大致檢查下,並使用 Ctrl + K, Ctrl + F 格式化代碼)

try\s*?{\s+((.|\n)*?)\s+}\s+catch(.|\n)*?}

說明

需要注意的有以下幾點:

  1. \s 表示各種空白字符,包括換行等,因此可以用來匹配try-catch“兩端”代碼中的空格
  2. 要匹配包括空格的所有字符,應該使用(.|\n),因為“.”號不包含換行符
  3. *? 表示盡可能少的匹配,+ 則表示盡可能多的匹配
  4. 在 Visual Studio 中使用 $1 $2 .....代表其中的分組(也有部分教程說是使用 \1 \2,可能是老版本的 VS,並沒有試驗)
  5. 可能有些 try-catch 的寫法不同,僅保證對圖示中的寫法有效
  6. 經過評論區的提醒,並不適用於嵌套try-catch的情況(會將原來的邏輯肢解),並且對於正常的try-catch也一並替換了,使用時應當先預覽再操作

參考

正則表達式教程:
https://www.runoob.com/regexp/regexp-metachar.html

Visual Studio 正則替換分組
https://zhuanlan.zhihu.com/p/51490812


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM