IF和ELSE在TRY CATCH?

时间:2013-09-25 16:21:06

标签: java android xml

我有这段代码

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。如果返回false,则显示另一个显示其他内容的TextView。正如root.checkRootMethod2 ();所发生的那样root.busybox ();您是否知道如何做?现在始终可视化Text04

3 个答案:

答案 0 :(得分: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,elsetry块括在一个{{1}}块中。

答案 1 :(得分:0)

我不知道在这里需要多次尝试/捕获:

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

    try
    {

您可以在上面的try / catch块中添加一个catch(Exception e),这将起到同样的作用。 其次,如果(root.RootAvailibility() && (root.checkRootMethod3()))没有其他部分。所以,如果它是假的,那么程序就会向前推进。

答案 2 :(得分:0)

嗯,你总是会看到Text04,因为没有条件排除它。它所在的try catch块位于顶层。

如果您能提供代码的简短,自包含,可编译的示例,将会有所帮助。显然缺少其他可能相关的代码。例如,与最后一个catch块一起的try。此外,它可以帮助您评论代码块的开头和结尾,以便您可以告诉if else语句中包含的内容。