Java try-and-catch被认为是if之后的一个语句吗?
在代码库中遇到了这个问题,并想知道Java try-and-catch被认为是if之后的一个语句吗?,java,if-statement,Java,If Statement,在代码库中遇到了这个问题,并想知道是否适用于整个try/catch,或者它是否被忽略。如果将If应用于整个try/catch,我想用大括号将其包装起来,但我不想破坏任何东西,也无法对其进行测试。trycatch是一条语句,可以将整个块包装成If语句的大括号。这与您当前的代码具有相同的语义 if (instance != null) try (InputStream stream = new FileInputStream(file)) { instance = getInstance
是否适用于整个try/catch,或者它是否被忽略。如果将If
应用于整个try/catch,我想用大括号将其包装起来,但我不想破坏任何东西,也无法对其进行测试。try
catch
是一条语句,可以将整个块包装成If语句的大括号。这与您当前的代码具有相同的语义
if (instance != null)
try (InputStream stream = new FileInputStream(file)) {
instance = getInstance(stream);
instance.sourceFile = file;
instances.put(instance.sourceFile.getPath(), instance);
return instance;
} catch (Exception e) {
throw new RuntimeException("Cannot locate '" + file + "'. " + e, e);
}
return instance;
编译器不允许使用不带try的catch
,因此在设置右大括号时,也可以通过反复试验得出相同的结论。try
catch
是一条语句,可以将整个块包装成if语句的大括号。这与您当前的代码具有相同的语义
if (instance != null)
try (InputStream stream = new FileInputStream(file)) {
instance = getInstance(stream);
instance.sourceFile = file;
instances.put(instance.sourceFile.getPath(), instance);
return instance;
} catch (Exception e) {
throw new RuntimeException("Cannot locate '" + file + "'. " + e, e);
}
return instance;
编译器不允许使用不带try的catch
,因此在设置右大括号时,您也可以通过反复试验得出相同的结论。如果应该应用于的还有什么?为什么不能测试它?在另一个文件中创建一个类似的示例,在一个try-catch块中使用如下语句,看看会发生什么?将try
与catch
分开会很奇怪,或者catch
只有在try
失败时才会执行,因此它必须与try
一起执行。因此,是的,它被认为是一个声明(及其所有内容)。如果你有大括号,那肯定会更好(对我们人类来说),我只能想象,如果try
失败,它会进入catch
。但是为什么写这篇文章的人不使用大括号呢。我坚信它们应该与每一个if
,for
等一起使用,因为如果没有其他的话,这很简单。@JerryM分支语句不需要大括号,根据我对JLS的记忆,它声明它们在下一个分号处终止,但我敢猜测,它适用于整个代码块/下面的语句。在个人层面上,我不主张因为模棱两可和可能引入错误而缺少花括号。如果
应该应用于什么?为什么你不能测试它?在另一个文件中创建一个类似的示例,在一个try-catch块中使用如下语句,看看会发生什么?将try
与catch
分开会很奇怪,或者catch
只有在try
失败时才会执行,因此它必须与try
一起执行。因此,是的,它被认为是一个声明(及其所有内容)。如果你有大括号,那肯定会更好(对我们人类来说),我只能想象,如果try
失败,它会进入catch
。但是为什么写这篇文章的人不使用大括号呢。我坚信它们应该与每一个if
,for
等一起使用,因为如果没有其他的话,这很简单。@JerryM分支语句不需要大括号,根据我对JLS的记忆,它声明它们在下一个分号处终止,但我敢猜测,它适用于整个代码块/下面的语句。在个人层面上,我不主张因为模棱两可和可能引入错误而缺少花括号