0
try {
  Man Fred = new Man();
} catch (exception e) {
  Print e 
}

Print Fred.getName ();

弗雷德现在超出了范围。我应该怎么做?

4

5 回答 5

4

您似乎知道 Java 语法,所以在伪

 Man Fred = null;
    try {
      Fred = new Man();
    } catch (exception e) {
      print e 
    } finally {
       //You could do some clean up.
    }

    if(Fred != null) {
      print Fred.getName();
    }

如果不..

   Man fred = null;
   try {
      fred = new Man();
    } catch (Exception e) {
      System.out.println(e.printStackTrace());
    } finally {
       //You could do some clean up.
    }

    if(fred != null) {
      System.out.println(fred.getName());
    }

Fred 变量必须在 try 块之外声明。所以它在方法或外部范围内是可见的。

于 2012-10-23T07:27:31.313 回答
4

现在在适当的Java中:

Man fred = null;
try {
  fred = new Man();
} catch (Exception e) {
  e.printStackTrace(); 
}

if (fred != null) {
  System.out.println(fred.getName());
}

您必须在要访问它的代码块内声明该变量。在这种特殊情况下:在“try”块之外。

于 2012-10-23T07:30:23.230 回答
1

Fred-block内可用try,因为那是您声明他的地方。相反,在块外声明他,如下所示:

Man fred;
try {
    fred = new Man();
} catch (Exception e) {
    e.printStackTrace();
}

if (fred != null) {
    System.out.println(fred);
}

注意额外的if (fred != null);因为创建 fred 可能会抛出一个Exception, 在这种情况下fred会是null,并且打印他可能不起作用。

于 2012-10-23T07:29:19.617 回答
0

正确的方法如下:

try
{   
    Man fred = new Man(); 
    print(fred.getName()); 
} 
catch (Exception exc) 
{   
    exc.printStackTrace();
}  

换句话说,您的“尝试”块应该足够大,以包含fred. 抵制使它们变得微小和连续的诱惑。而是使它们大而嵌套。

于 2012-10-23T09:32:33.627 回答
-1

请参阅以下更改:

Man Fred = null; 
Try
{   
    Fred = new Man(); 
} 
catch (exception e) 
{   
    Print e  
}  

If(Fred != null)
{
    Print Fred.getName (); 
}
于 2012-10-23T07:30:22.313 回答