【问题标题】:Syntax error in Try & CatchTry & Catch 中的语法错误
【发布时间】:2016-11-24 08:11:38
【问题描述】:

我在完成“试一试”时遇到问题。我不断收到语法错误,要求在不需要它们的地方使用“(”“{”“;”标记。搜索了所有答案,但我还没有得出关于为什么我不断收到此错误的结论。这里是我的代码

import javax.swing.JOptionPane;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.MenuBar;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebHistory;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Browser extends Application{

final Button Back = new Button("<-");
final Button Forward = new Button ("->");
final Button Home = new Button("Home");
final Button Reload = new Button("r");
final MenuBar menuBar = new MenuBar();
final TextField txt = new TextField();

@Override
public void start(Stage stage) throws Exception{
    VBox hBox = new VBox();
    WebView wv = new WebView();
    WebEngine engine = wv.getEngine();
    WebHistory wh = engine.getHistory();
    engine.load("https://www.google.com");

    txt.setOnAction(new EventHandler<ActionEvent>(){
        try{
            public void handle(ActionEvent event){
                engine.load(txt.getText());
            }
        }catch(Exception e){
            showError("Unable to load site");
        }
    });
    hBox.getChildren().setAll(txt, wv);

    Scene scene = new Scene(hBox, 800, 600);
    stage.setTitle("Anthony Gayflor-CS260 OOP");
    stage.setScene(scene);
    stage.show();

}

private void showError(String errorMessage){
    JOptionPane.showMessageDialog(this, errorMessage, "Error", JOptionPane.ERROR_MESSAGE);
}

public static void main(String[] args){
    Application.launch(args);
}
}

当我编译它时,我得到的错误是

Caused by: java.lang.Error: Unresolved compilation problems: 
Syntax error, insert "}" to complete ClassBody
Syntax error, insert ")" to complete MethodInvocation
Syntax error, insert ";" to complete Statement
Syntax error on token "(", ; expected
Syntax error on token ")", ; expected
Syntax error on tokens, delete these tokens

at Browser.start(Browser.java:33)

【问题讨论】:

  • 您不能将方法包装在 try-catch 块中。
  • 里面有try-catch> public void handle(ActionEvent event)
  • 我想你是对的哈哈

标签: java syntax try-catch token


【解决方案1】:

除了 Jens 的回答,您还可以在 Java 8 中使用 lambda,因为 EventHandler 是一个函数式接口。然后您的代码将如下所示:

txt.setOnAction(event -> {
    try {
        engine.load(txt.getText());
    }catch (Exception e) {
        showError("Unable to load site");
    }
});

【讨论】:

    【解决方案2】:

    try-catch 块必须在方法内部:

     public void handle(ActionEvent event){
        try{
                engine.load(txt.getText());
        }catch(Exception e){
               showError("Unable to load site");
        }
     }
    

    【讨论】:

      【解决方案3】:

      不允许在 try / catch 子句中定义方法!!!

      将 try / catch 子句放入方法中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-20
        • 2014-10-31
        • 2012-02-07
        • 1970-01-01
        • 2017-03-27
        • 1970-01-01
        相关资源
        最近更新 更多