Java:Try-Catch-Continue?

假设我可以使用一组语句:

try { String a = getProperty("a"); String b = getProperty("b"); String c = getProperty("c"); } catch(Exception e) { } 

现在,假设找不到属性b,函数抛出exception。 在这种情况下,我将如何继续或者可能将b设置为null而不必为每个属性编写try-catch块? 我的意思是,a,b,c存在,但有时候可能根本找不到抛出exception的东西。

假设您无法更改函数以便在找不到属性时返回null,那么您可能会将所有内容包装在自己的try catch块中 – 特别是如果您希望检索的每个值都可以检索(而不是让第一个失败的值取消整个操作。)

如果你要检索很多这些属性,那么编写一个帮助器方法可能会更清晰:

 String getPropertySafely(String key) { try { return getProperty(key); } catch (Exception e) { return null; } } 

你必须在每个语句周围放置一个try-catch。 没有继续(就像VB中的ON ERROR ... RESUME块一样)。 代替:

 String a = null; try { a = getProperty("a"); } catch(Exception e) { ... } String b = null; try { b = getProperty("b"); } catch(Exception e) { ... } String c = null; try { c = getProperty("c"); } catch(Exception e) { ... } 

你可以写:

 public String getPropertyNoException(String name) { try { return getProperty(name); } catch (Exception e) { return null; } } 

我个人认为getProperty()是一个不好的候选者,只需要为所有这些额外的样板文件抛出exception

由于每次使用相同的函数时都可以将它放在循环中:

 String[] abc = new String[3]; String[] param = {"a", "b", "c"}; for (int i = 0; i < 3; i++) { try { abc[i] = getProperty(param[i]); } catch(Exception e) { } } 

但这是相当人为的,只对大量房产有用。 我怀疑你必须简单写3试试。

如果计划使用其中许多因素,您应该重新考虑如何处理getProperty ,因为没有一种简单的方法可以做到这一点。

您可以利用finally语句,但每次调用仍然需要try-catch