如何在 try 块移动到 catch 之前执行所有行?

发布于 2025-01-11 20:03:54 字数 797 浏览 0 评论 0原文

我必须读取 try 块中的文件,然后将其打印出来。当打印方法正在工作时,程序不会运行该方法。我该如何解决这个问题?我无法将其保留在 while 循环中。

Lexer.java

private boolean atEOF = false;
private SourceReader source;

public static void main(String args[]) {
  Token token;
    
  try {
    Lexer lex = new Lexer(args[0]);

    while(!(lex.atEOF)) {
      token = lex.nextToken(); 
    }
  
  lex.source.printVec(); // WANT TO EXECUTE THIS METHOD

 
  } catch (Exception e) {
      System.out.println("usage: java lexer.Lexer filename.x"); 
      System.exit(-1);
  } 
}

SourceReader.java

public void printVec() {

  System.out.println("in the program");

  for (String l : progVec) {
    System.out.println(l);
  }
}

如何在 Lexer.java 中的 while 循环之后运行 printVec()

I have to read a file in try block and later print it out. While the print method is working, the program is not running the method. How do I solve this? I can't keep it in the while loop.

Lexer.java

private boolean atEOF = false;
private SourceReader source;

public static void main(String args[]) {
  Token token;
    
  try {
    Lexer lex = new Lexer(args[0]);

    while(!(lex.atEOF)) {
      token = lex.nextToken(); 
    }
  
  lex.source.printVec(); // WANT TO EXECUTE THIS METHOD

 
  } catch (Exception e) {
      System.out.println("usage: java lexer.Lexer filename.x"); 
      System.exit(-1);
  } 
}

SourceReader.java

public void printVec() {

  System.out.println("in the program");

  for (String l : progVec) {
    System.out.println(l);
  }
}

How do I run printVec() after the while loop in Lexer.java?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏了南城 2025-01-18 20:03:54

我只需在 try-catch 块之外声明词法分析器,然后将所需的函数也放在 catch 部分的第一行。

Lexer lex;  
try {
  lex = new Lexer(args[0]);

  while(!(lex.atEOF)) {
    token = lex.nextToken(); 
  }
  lex.source.printVec(); 
} catch (Exception e) {
  lex.source.printVec();
  //... rest of code
} 

I would simply declare the Lexer outside of the try-catch block then put the required Function at the first line of the catch part too.

Lexer lex;  
try {
  lex = new Lexer(args[0]);

  while(!(lex.atEOF)) {
    token = lex.nextToken(); 
  }
  lex.source.printVec(); 
} catch (Exception e) {
  lex.source.printVec();
  //... rest of code
} 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文