do{}while(false)妙用
阿新 • • 發佈:2018-11-10
- 神技do{}while(false)
do{}while(false)或者說do{}while(0),本人在linux原始碼中學得,起初看起來比較奇怪,但在處理連續流程中特別有用,例如ABC三個流程,A執行後判斷條件如果為true再執行B,如果未false直接結束流程,B執行完後同樣判斷條件如果為true再執行C,如果未false直接結束流程,最後執行C,如果不用這個神技,處理起來比較麻煩,下面是一種寫法
if( A() ) { if( B() ) { C(); } }
可以看出多層巢狀if,如果流程夠多if巢狀繼續增加,下面是神技寫法
do { if( !A() ) { break; } if( !B() ) { break; } C(); } while( false );
可以看到解決了if巢狀,而且從程式碼上符合人的邏輯思維
- try{}catch、升級版do{}while(false)
現在有一個新需求,那就是流程ABC執行後,無論前面的結果都要執行流程D,用do{}while(false)的寫法如下
do { if( !A() ) { break; } if( !B() ) { break; } C(); } while( false ); D();
其實高階語言的try-catch功能同樣可以達到do{}while(false)的效果,用法如下
try { if( !A() ) { throw new Exception(); } if( !B() ) { throw new Exception(); } C(); } catch( Exception e) { } finally { D(); }
是不是看著跟do{}while(false)結構一致
用以上的方法可以很方便的處理流程,希望對大家有所幫助