try {
Man Fred = new Man();
} catch (exception e) {
Print e
}
Print Fred.getName ();
弗雷德现在超出了范围。我应该怎么做?
您似乎知道 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 块之外声明。所以它在方法或外部范围内是可见的。
现在在适当的Java中:
Man fred = null;
try {
fred = new Man();
} catch (Exception e) {
e.printStackTrace();
}
if (fred != null) {
System.out.println(fred.getName());
}
您必须在要访问它的代码块内声明该变量。在这种特殊情况下:在“try”块之外。
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
,并且打印他可能不起作用。
正确的方法如下:
try
{
Man fred = new Man();
print(fred.getName());
}
catch (Exception exc)
{
exc.printStackTrace();
}
换句话说,您的“尝试”块应该足够大,以包含fred
. 抵制使它们变得微小和连续的诱惑。而是使它们大而嵌套。
请参阅以下更改:
Man Fred = null;
Try
{
Fred = new Man();
}
catch (exception e)
{
Print e
}
If(Fred != null)
{
Print Fred.getName ();
}