try中定義的區域性變數在finally中找不到

2021-08-21 11:49:05 字數 385 閱讀 6240

connection conn = null;

statement statement = null;

try catch (exception e) finally

如果我將conn 和statement放到try裡宣告,那麼finally就會提示找不到這兩個變數

這是為什麼?

和try catch沒有關係,只要是塊,就符合這個規則。包括if for while switch等。

一對花括號代表著乙個作用域,當在try的花括號裡面定義變數時,該變數只能在try{}中才有效,可以理解為該變數只屬於try,finall{}裡是找不到該變數的。

如果在try{}catch{}finally{}的外面定義變數,可以理解為是屬於他們共有的。

lambda 內使用的區域性變數必須是final的

在開發 中遇到乙個問題,使用lambda遍歷map,外部有乙個string,在迴圈中把 string 字串的關鍵字進行替換,但是一直不能替換成功。錯誤提示,使用的這個變數必須是final或者是實際上final的?為什麼?lambda是乙個匿名內部類,內部類是指在乙個外部類內部再定義乙個類。內部類可以...

對定義區域性變數位置的思考

c89規定,在任何執行語句之前,在塊的開頭宣告所有區域性變數。在c99以及c 中則沒有這個限制,即在首次使用之前,可在塊的任何位置都可以宣告變數。另一方面,編譯器不同也不同,gcc編譯器有很多擴充套件的功能,可完美支援c99標準。所以在gcc編譯下區域性變數並不是一定要定義在 塊的開始位置,可以如下...

C 中的區域性變數衝突

乙個變數在同乙個作用域中不能夠宣告兩次,如下 錯誤。using system usingsystem.collections.generic usingsystem.linq usingsystem.text usingsystem.threading.tasks 編譯錯誤如下 嚴重性 說明專案檔案...