Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java try-and-catch被认为是if之后的一个语句吗?_Java_If Statement - Fatal编程技术网

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的记忆,它声明它们在下一个分号处终止,但我敢猜测,它适用于整个代码块/下面的语句。在个人层面上,我不主张因为模棱两可和可能引入错误而缺少花括号