2013-09-25 75 views
-1

我有這樣的代碼IF和ELSE TRY CATCH?

root = new Root(); 
root.checkRootMethod2(); 
TextView=(TextView)view.findViewById(R.id.textView4); 

if(root.checkRootMethod2()) { 
    TextView.setText(Html.fromHtml("<b>TEXT 01</b><br>")); 
} else { 
    TextView.setText(Html.fromHtml("<b>TEXT 02</b><br>")); 
} 

try { 
    if (root.RootAvailibility() && (root.checkRootMethod3())) { 
     try { 
      Process process = Runtime.getRuntime().exec("su"); 
      OutputStream stdin = process.getOutputStream(); 
      stdin.flush(); 
      stdin.close(); 
     } catch(Exception e) { 
     } 
     TextView.append(Html.fromHtml(
      "<b><font color=\"green\">TEXT 03</b></font>")); 
    } 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

try { 
    root.busybox(); 
    TextView.append(Html.fromHtml(
     "<br><b><font color=\"green\">TEXT 04</b></font>")); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch(Exception e) { 
    TextView.append(Html.fromHtml(
     "<br><b><font color=\"red\">TEXT05</b></font>")); 
} 

我想,如果if (root.RootAvailibility() && (root.checkRootMethod3())) return true查看TextView,說something.If返回false,顯示別的其他的TextView。正如root.checkRootMethod2();所發生的情況一樣root.busybox();您對我該怎麼辦有什麼想法嗎?現在,想象總是Text04

+0

把代碼checkRootMethod2?它是*布爾變量的getter? – NFE

+0

處理你的if()elseif()else'算法。 –

回答

0

我不知道什麼是多次嘗試的需要/趕上這裏:

try { 
    if (root.RootAvailibility() && (root.checkRootMethod3())) 
    { 

    try 
    { 

您可以在一個更趕上(例外五)添加到上層try/catch塊和將用於相同的目的。 其次,如果(root.RootAvailibility() && (root.checkRootMethod3()))沒有其他部分。所以,如果它是錯誤的,那麼程序就會向前移動。

0

那麼你總是會看到Text04,因爲沒有條件排除它。它所在的try catch塊位於頂層。

如果您可以提供簡短的,自包含的,可編譯的代碼示例,這將有所幫助。顯然還有其他潛在的相關代碼缺失。例如,最後一個catch塊的嘗試。此外,它可以幫助您評論代碼塊的開始和結束,以便您可以確定if else語句中包含的內容。

1
try { 
    if (root.RootAvailibility() && (root.checkRootMethod3())) 
    { 
     try 
     { 
     /// your code ... 
     } 
     catch(Exception e){ } 

    TextView.append(Html.fromHtml("<b><font color=\"green\">TEXT 03</b></font>")); 
    } 
    }catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
// Codes here runs always regardless of if clause. 

代碼(你的情況try塊)運行不管if條件作爲try塊清除if塊的範圍。
要麼將​​try完全放入if塊內,要麼將if,else聲明爲單個try塊。