2013-09-25 42 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块。