Reports control flow statements in finally blocks that can override control flow in try/catch blocks.
✅ This rule is included in the ts logical and logicalStrict presets.
Control flow statements such as return, throw, break, and continue in finally blocks can cause unexpected behavior.
When these statements appear in a finally block, they override any control flow statements in the corresponding try or catch blocks.
The finally block always executes, and its control flow statements take precedence, which can lead to bugs that are difficult to diagnose.
AEfuncti5<3 sp ansty="le--0:#82AAFF;--1:#3B61">B0processDa3 sp>11<()sp ansty="le--0:#D6DEEB;--1:#403F">53()sp>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#C792EA;--1:#8844">AEt sp>53 {d>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#C792EA;--1:#8844">AEretu sp>5<3 sp ansty="le--0:#82AAFF;--1:#3B61">B0fetchDa3 sp>53( {d><);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53 sp><} sp ansty="le--0:#C792EA;--1:#8844">AEfinal} sp>53);d>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#C792EA;--1:#8844">AEretu sp>5<3 sp ansty="le--0:#FF6A83;--1:#A248">48nu3 sp>5 {d><3;d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">5 sp>3;d><3}d ivclassNa="meec-li">53}d><3}d ivclassNa="meco"><}d>}d>3}d>AEfuncti5<3 sp ansty="le--0:#82AAFF;--1:#3B61">B0handleErr3 sp>11<()sp ansty="le--0:#D6DEEB;--1:#403F">53()sp>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#C792EA;--1:#8844">AEt sp>53 {d>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#C792EA;--1:#8844">AEthr sp>5<3 sp ansty="le--0:#7FDBCA;--1:#096E">72n3 sp>5<3 sp ansty="le--0:#82AAFF;--1:#3B61">B0Err3 sp>5<3(sp ansty="le--0:#D9F5DD;--1:#1111">13(sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4DOriginal err1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">531"sp> {d><);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53 sp><} sp ansty="le--0:#C792EA;--1:#8844">AEcat} sp>53 (error));d>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#C792EA;--1:#8844">AEthr sp>53 erro {d>53< sp ansty="le--0:#D6DEEB;--1:#403F">53 sp><} sp ansty="le--0:#C792EA;--1:#8844">AEfinal} sp>53< {d ivclassNa="meec-li">nt < sp ansty="le--0:#C792EA;--1:#8844">AEthr sp>5<3 sp ansty="le--0:#7FDBCA;--1:#096E">72n3 sp>5<3 sp ansty="le--0:#82AAFF;--1:#3B61">B0Err3 sp>5<3(sp ansty="le--0:#D9F5DD;--1:#1111">13(sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4DOverride err1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">531"sp> {d><);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">5 sp>);d><3}d ivclassNa="meec-li">53}d><3}d ivclassNa="meco"><}d>}d>3}d>AEf53< (sp ansty="le--0:#C792EA;--1:#8844">AEle (sp>5<3isp ansty="le--0:#C792EA;--1:#8844">AE 3isp><= sp ansty="le--0:#F78C6C;--1:#AA09">8= sp><20sp ansty="le--0:#D6DEEB;--1:#403F">53; 20sp>A53 iteA72leng53;< isp ansty="le--0:#C792EA;--1:#8844">AE isp><++sp ansty="le--0:#D6DEEB;--1:#403F">53)++sp>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#C792EA;--1:#8844">AEt sp>53 {d>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#82AAFF;--1:#3B61">B0processIt sp>53(items[i] {d><);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53 sp><} sp ansty="le--0:#C792EA;--1:#8844">AEfinal} sp>53);d>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#C792EA;--1:#8844">AEbre sp>5 {d><3;d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">5 sp>3;d><3}d ivclassNa="meec-li">53}d><3}d ivclassNa="meco"><}d>}d>3}d> 44AEfunc361B0process11<11() spans="tyle--0:#D6DEEB;--1:#40">3F11()><53 {divclass="Nameec-">de44A3F53 ><53 {divclass="Nameec-">dent< spans="tyle--0:#C792EA;--1:#88">44AEre >361B0fetch3F553 ><3() ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53 ><53} spans="tyle--0:#C792EA;--1:#88">44AEfin53} >3F3()><53 {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0cle >3F553 ><3() ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">353 >3()>3< }> }><}di vdivclass="Nameexpressive-">44AEfunc361B0handleE11<11() spans="tyle--0:#D6DEEB;--1:#40">3F11()><53 {divclass="Nameec-">de44A3F53 ><53 {divclass="Nameec-">dent< spans="tyle--0:#C792EA;--1:#88">44AEt >36E7<2new spans="tyle--0:#D6DEEB;--1:#40">32new>61B0E31<111" spans="tyle--0:#ECC48D;--1:#98">4E4DOriginal e111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3F111">53 ><53) ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53 ><53} spans="tyle--0:#C792EA;--1:#88">44AEc53} >3F53 (erro53)>3F53< spans="tyle--0:#D6DEEB;--1:#40">3F53con >4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0e4AE.>3F53(errdent< spans="tyle--0:#C792EA;--1:#88">44AEt >3F53 er3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53 ><53} spans="tyle--0:#C792EA;--1:#88">44AEfin53} >3F<53 {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0cle >3F553 ><3() ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">353 >3()>3< }> }>}di><}di vdivclass="Nameexpressive-">44A3F<53 ( spans="tyle--0:#C792EA;--1:#88">44AE53 (>344A0<9820 spans="tyle--0:#D6DEEB;--1:#40">3F539820><; i spans="tyle--0:#C792EA;--1:#88">4; i ><4AE< spans="tyle--0:#D6DEEB;--1:#40">3F53 i4AE<>4<4AE. spans="tyle--0:#7FDBCA;--1:#09">6E72le4AE.>3F5<3; i spans="tyle--0:#C792EA;--1:#88">443; i>3F5<3) {divclass="Nameec-">de44A3F3) ><53 {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0process >- 3F53(items[
53 >dent< spans="tyle--0:#C792EA;--1:#88">44AEb >33F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53 ><53} spans="tyle--0:#C792EA;--1:#88">44AEfin53} >3F<53 {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0cle >3F553 ><3() ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">353 >3()>3< }> }>}di>
This rule is not configurable.
If you are very confident in your handling of exception handling in your code and specifically want to use the confusing quirks of finally control flow statements, this rule might not be for you.