我有一個沒有標準錯誤處理方式的大解決方案。最近我發現了很多有try/finally塊的方法。沒有catch塊。 我如何找到所有這類事情?如何查找沒有catch塊的try塊?
-3
A
回答
2
try
不一定意味着該塊可能會引發錯誤。對於懶惰的程序員來說,它有時候是語法上的糖。
例:
假定你希望return
一個值,然後修改這個值。你可以寫爲:
public int Foo() {
int old = this.value;
this.value = 5;
return old;
}
但還有一個更簡便的方法是:
public int Foo() {
try {
return this.value;
} finally {
this.value = 5;
}
}
你可以說第二個實現較長,但總的來說,這是不正確的。此外,它可以防止顯式地存儲old
值。第二個實現更具可讀性,因爲它陳述了程序員的意圖,所以不太容易出錯。
有人可能會爭辯說,這使得try
關鍵字比第一位可能更加模糊。一個更好的關鍵詞可能是比較合適的...
據我所知,有檢查try
塊沒有catch
塊沒有簡單的方法。你可以指望一個Regex
會使用@"try\d*{[^}]*}\d*finally\d{[^}]*}
找到最的實例(例如,而是說有在try
或finally
塊額外的範圍,那麼Regex
不會檢測這一點。最簡單的可能是複製上下文無關語法C#/ Vb.Net,然後在try
/catch
/finally
塊的結構做適當的檢查和打印的情況下,它不包含catch
塊。
+0
謝謝@CommuSoft – 2014-10-02 13:53:59
相關問題
- 1. 使用沒有'catch'塊的'try-finally'塊
- 2. try catch塊
- 3. try catch塊宏
- 4. 在try catch塊
- 5. try-catch塊
- 6. 如何在try catch塊
- 7. C# - 如何try catch塊
- 8. 沒有try/catch塊關閉InputStream?
- 9. Laravel沒有運行try catch塊
- 10. 異常沒有在try catch塊釣到
- 11. try catch塊位置
- 12. try catch塊不JS
- 13. try catch塊問題
- 14. 嵌套try-catch塊?
- 15. Arduino中的try/catch塊
- 16. T-SQL中的TRY CATCH塊
- 17. 是我的try catch塊嗎?
- 18. 帶有輸出值的ASM Try/Catch塊
- 19. 檢查參數,以避免try..catch塊(?)
- 20. 異常如何突破try \ catch塊?
- 21. 如何調試try和catch塊?
- 22. TYPO3 6.2如何使用try-catch塊
- 23. 如何使用try-catch塊進行PDO
- 24. 使用InputMismatchException try/catch塊
- 25. Try-Catch中的變量不可用於其他Try-Catch塊嗎?
- 26. 幾個try-catch塊VS一個大try-catch塊[在一個線程中]
- 27. 在Android中,如何查看try/catch塊中收到的錯誤?
- 28. 有什麼更好的使用,__try/__ except塊或try/catch塊?
- 29. 是否可以在catch塊中使用Try catch塊?
- 30. Firefox沒有正確處理window.nerror中的try/catch塊.onerror
爲什麼你希望找到的這一切發生? – krisdyson 2014-09-22 18:39:23
爲什麼只搜索「finally」是不夠的? – 2014-09-22 18:41:45
搜索'finally'並查看在它之前是否有catch塊? – 2014-09-22 18:42:04