do{}while(false)妙用

來源:互聯網
上載者:User

標籤:code   div   lin   exce   代碼   而且   bsp   升級   執行流程   

  • 神技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)結構一致

 

用以上的方法可以很方便的處理流程,希望對大家有所協助

do{}while(false)妙用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.