【发布时间】:2017-03-14 16:19:50
【问题描述】:
我有一个这样的 try catch 块:
try {
try {
GeoPoint dummy = new GeoPoint(0, 0);
deviceCompatibleWithMaps=true;
} catch (Throwable t) {
t.printStackTrace();
deviceCompatibleWithMaps=false;
}
functionThatCanCrash();
} catch (Throwable t) {
t.printStackTrace();
}
GeoPoint dummy = new GeoPoint(0, 0) 在我的 nexus 5x 测试设备中永远不会失败。 deviceCompatibleWithMaps 是一个全局变量。
当设备在内部 try-catch 块中没有给出异常时,全局变量 deviceCompatibleWithMaps 是否应该在所有情况下存储真实值?或者如果 Throwable is Error 或 Exception 在上面的 trycatch 块中被抛出,它的值可能不会被保存?
我在一个应用程序中遇到了一个罕见的错误,有时全局的值没有被存储,我怀疑在 try catch 块上的异常下执行的分配将不会被安全地存储。
【问题讨论】:
-
为什么不把
this.globalBool = true;放在外面试试呢?还是在finally块中? -
这只是一个示例代码,实际代码要复杂得多
-
您应该提供您的具体问题。此代码
globalBool将始终为真。 -
globalBool不是全局变量。 -
“这只是一个示例代码” - 是的,但是一个什么示例?不是你问的问题。所以没用。