Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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-Catch中的变量对其他Try-Catch块不可用?_Java_Try Catch - Fatal编程技术网

Java Try-Catch中的变量对其他Try-Catch块不可用?

Java Try-Catch中的变量对其他Try-Catch块不可用?,java,try-catch,Java,Try Catch,我在try-catch块的两个分支中创建了一个名为“file\u-name”的变量——因此,无论是否抛出错误,该变量都应该可用 但遗憾的是,当我在下一个try-catch块中尝试使用“file\u-name”变量时,我得到了“找不到符号” packagetimelogger; 导入java.io.IOException; 公共类计时记录器{ 公共静态void main(字符串[]args)引发IOException{ 试一试{ 字符串文件_name=args[0]; } catch(IndexO

我在try-catch块的两个分支中创建了一个名为“file\u-name”的变量——因此,无论是否抛出错误,该变量都应该可用

但遗憾的是,当我在下一个try-catch块中尝试使用“file\u-name”变量时,我得到了“找不到符号”

packagetimelogger;
导入java.io.IOException;
公共类计时记录器{
公共静态void main(字符串[]args)引发IOException{
试一试{
字符串文件_name=args[0];
}
catch(IndexOutOfBoundsException e){
字符串文件_name=“KL_Entries.txt”;
}
试一试{
ReadFile file=新的ReadFile(文件名);
字符串[]aryLines=file.OpenFile();
int i;
对于(i=1;i
我尝试改为使用“publicstringfile_name=…”,但出现了“表达式的非法开始”之类的错误

我如何使这段代码编译?我觉得我错过了一些愚蠢的事情


编辑:找到,指示变量是本地的,以尝试捕获块。因此,通过在try-catch之外声明变量,然后在try-catch块中为其赋值,解决了这个问题

在try-catch块中声明的变量是这些块的本地变量。因此,在try-catch外部声明变量,然后在try-catch中为其赋值


您已尝试在try块和catch块中定义变量
文件名。但是,这意味着该变量仅在该块中可用

相反,您要做的是在外部定义它。当您在catch块中提供回退时,您可以将其定义为默认值并用参数覆盖它。因此,您不再需要尝试捕捉:

String file_name = "KL_Entries.txt";
if (args.length > 0) {
      file_name = args[0];
}

在第一次尝试/捕获之外声明您的
文件名
,但要像当前一样初始化它。很高兴它解决了您的问题。:)如果你认为这是一个重复,投票关闭这样。
String file_name = "KL_Entries.txt";
if (args.length > 0) {
      file_name = args[0];
}