Java:如何在try-catch -loop中访问作业?

hhh*_*hhh 3 java compiler-construction error-handling variable-assignment

这个问题让我陷入了巨大的try-catch循环.我想要更小.那么如何在循环中访问赋值?

$ javac TestInit2.java 
TestInit2.java:13: variable unknown might not have been initialized
  System.out.println(unknown);
                     ^
1 error
Run Code Online (Sandbox Code Playgroud)

import java.util.*;
import java.io.*;

public class TestInit2 {

 public static void main(String[] args){
  String unknown;
  try{
   unknown="cannot see me, why?";
  }catch(Exception e){
   e.printStackTrace();
  }
  System.out.println(unknown);
 }
}
Run Code Online (Sandbox Code Playgroud)

And*_*are 9

您需要为其分配一个初始值unknown(在这种情况下,我已经使用过null但可以随意分配对您的应用程序有意义的任何值):

import java.util.*;
import java.io.*;

public class TestInit2 {

    public static void main(String[] args){
        String unknown = null;
        try{
            unknown="cannot see me, why?";
        }catch(Exception e){
            e.printStackTrace();
        }
        System.out.println(unknown);
    }
}
Run Code Online (Sandbox Code Playgroud)

由于您分配的内部发生try的编译器无法验证的方式,unknown将永远被分配一个值,所以它是可能的 ,你可以使用这个变量没有分配的值.

  • 从catch内部抛出异常 - 即如果异常不可恢复 - 或者在catch子句中设置变量值也可以解决它. (2认同)