这是我写的代码.
int num;
try {
num=100;
DoSomething();
System.out.println(num);
} catch(Exception e) {
DoSomething1();
} finally{
DoSomething2();
}
System.out.println(num); // Error Line
Run Code Online (Sandbox Code Playgroud)
我在我提到的错误行上收到错误'本地变量num可能尚未初始化'.在移除catch块时,错误消失.这有什么不对?我做错了吗?
Dav*_*d M 11
如果try块中抛出异常,则该变量num可能确实未初始化.如果包含catch块,则执行可以继续执行错误行,因此编译器会报告您说明的错误.
如果你删除了catch块,那么执行只会在没有异常的情况下到达"错误行",在这种情况下,变量将在内部初始化try.
(我假设你已经知道在使用它们之前需要初始化局部变量,并且专注于你在catch块中注意到的行为......)
| 归档时间: |
|
| 查看次数: |
9798 次 |
| 最近记录: |