Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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
未报告的异常javax.script.ScriptException;必须被抓住或宣布被抛出_Java_Events_Action - Fatal编程技术网

未报告的异常javax.script.ScriptException;必须被抓住或宣布被抛出

未报告的异常javax.script.ScriptException;必须被抓住或宣布被抛出,java,events,action,Java,Events,Action,这是一个计算器应用程序。当我尝试编译它时,会出现以下消息unreportedexceptionjavax.script.ScriptException;必须捕获或声明要抛出 我觉得这是因为类被设置为ActionEvent。我是一名学生,所以我还在学习:) 有什么想法吗?谢谢 \在您的this操作中,执行方法中的行se.eval(createequalion)正在抛出ScriptException。你必须处理这件事 添加以下代码以编译该类 Object result = null;

这是一个计算器应用程序。当我尝试编译它时,会出现以下消息
unreportedexceptionjavax.script.ScriptException;必须捕获或声明要抛出

我觉得这是因为类被设置为
ActionEvent
。我是一名学生,所以我还在学习:)

有什么想法吗?谢谢


\

在您的this
操作中,执行
方法中的行
se.eval(createequalion)正在抛出
ScriptException
。你必须处理这件事

添加以下代码以编译该类

Object result = null;
            try {
                result = se.eval(createEquasion);
            } catch (ScriptException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            if (result != null)
                finalAnswer = result.toString();
ScriptEngine.html#eval
可以抛出两个
异常

  • NullPointerException
  • 脚本异常
  • NullPointerException
    是RuntimeException,所以编译器不会强制您处理此异常。但是
    ScriptException
    是选中的异常,所以编译器会强制您处理此
    异常
    将代码块插入try catch或抛出它

    try catch
    block

    if(source==buteq){
           try{
                ScriptEngineManager manager = new ScriptEngineManager();
                ScriptEngine se = manager.getEngineByName("JavaScript");        
                Object result = se.eval(createEquasion);
                finalAnswer = result.toString();
                answer.setText(finalAnswer);
           }catch(ScriptException se){
                ...
           }
    }
    
    ScriptException
    类声明-

    公共类ScriptException扩展异常{…}

    请查找更多信息-


    您可以执行以下操作:

    // .. other imports
    import javax.script.ScriptException;
    
    // .. the rest of your code
    if(source==buteq){
      try{
         ScriptEngineManager manager = new ScriptEngineManager();
         ScriptEngine se = manager.getEngineByName("JavaScript");        
         Object result = se.eval(createEquasion);
         finalAnswer = result.toString();
         answer.setText(finalAnswer);
      catch(ScriptEngineManager e) {
         // handle exception
         System.err.println("Error evaluating the script: " + e.getMessage());
      }
    }
    
    如果您正在处理方法之外的任何类型的异常,您可以在方法签名上添加一个
    throws
    声明:

    // .. other imports
    import javax.script.ScriptException;
    
    // your method signature
    public void actionPerformed (ActionEvent e) throws ScriptException {
    
    // ...
    
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine se = manager.getEngineByName("JavaScript");        
    Object result = se.eval(createEquasion);
    finalAnswer = result.toString();
    answer.setText(finalAnswer);
    
    // ...
    

    应该是这样。

    您的
    ScriptEngineManager
    代码在哪里?您如何处理代码中的异常?您是直接向用户提供异常,还是将其包装在错误消息中?