在 try 块中访问变量
Access variable in try block
我想把方法头的throws FileNotFoundException
去掉再放进去
public static String[] read(String file) throws FileNotFoundException {
但是我无法再访问 in
(扫描仪)了!如何处理?
public static String[] read(String file) {
try {
Scanner in = new Scanner(new FileReader(file));
}
catch (Exception e) {
}
// ...
in.close();
// ...
}
只需使用try-with-resources,这样您就不必担心关闭扫描仪对象。
try (Scanner in = new Scanner(new FileReader(file))) {
//Your code
}
catch (Exception e) {
}
in
变量的局部作用域为 try
块。您可以在 try
块之前声明变量, 或 在 try
块内关闭 in
。如果它从未成功打开,关闭它也没有多大用处。
变量 in
超出了 try
块的范围。您可以这样做:
public static String[] read(String file) {
Scanner in = null;
try {
in = new Scanner(new FileReader(file));
}
catch (Exception e) {
}
finally() {
in.close();
}
// ...
}
或者更好的是,尝试使用资源
public static String[] read(String file) {
try (Scanner in = new Scanner(new FileReader(file))){
String line = in.nextLine();
// whatever comes next
}
catch (Exception e) {
}
// right here, the scanner object will be already closed
return ...;
}
您可以尝试使用资源,允许自动关闭您的输入。
那样
Scanner in ;
try ( in = new Scanner(new FileReader(file))) {
}
catch (Exception e) {
}
我想把方法头的throws FileNotFoundException
去掉再放进去
public static String[] read(String file) throws FileNotFoundException {
但是我无法再访问 in
(扫描仪)了!如何处理?
public static String[] read(String file) {
try {
Scanner in = new Scanner(new FileReader(file));
}
catch (Exception e) {
}
// ...
in.close();
// ...
}
只需使用try-with-resources,这样您就不必担心关闭扫描仪对象。
try (Scanner in = new Scanner(new FileReader(file))) {
//Your code
}
catch (Exception e) {
}
in
变量的局部作用域为 try
块。您可以在 try
块之前声明变量, 或 在 try
块内关闭 in
。如果它从未成功打开,关闭它也没有多大用处。
变量 in
超出了 try
块的范围。您可以这样做:
public static String[] read(String file) {
Scanner in = null;
try {
in = new Scanner(new FileReader(file));
}
catch (Exception e) {
}
finally() {
in.close();
}
// ...
}
或者更好的是,尝试使用资源
public static String[] read(String file) {
try (Scanner in = new Scanner(new FileReader(file))){
String line = in.nextLine();
// whatever comes next
}
catch (Exception e) {
}
// right here, the scanner object will be already closed
return ...;
}
您可以尝试使用资源,允许自动关闭您的输入。
那样
Scanner in ;
try ( in = new Scanner(new FileReader(file))) {
}
catch (Exception e) {
}