0

这是一个计算器应用程序。当我尝试编译时,会出现以下消息unreported exception javax.script.ScriptException; must be caught or declared to be thrown

我有一种感觉,这是因为课程设置为ActionEvent. 我是学生,所以我还在学习:)

有任何想法吗?谢谢

\

4

3 回答 3

0

在你的这个actionPerformed方法中,这条线se.eval(createEquasion);正在抛出ScriptException。你必须处理这个 Excpetion。

添加以下代码以编译类

Object result = null;
            try {
                result = se.eval(createEquasion);
            } catch (ScriptException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            if (result != null)
                finalAnswer = result.toString();
于 2013-03-04T05:43:30.353 回答
0

ScriptEngine.html#eval可以扔两个Exception

  1. 空指针异常
  2. 脚本异常

NullPointerException是 RuntimeException 所以编译器不会强迫你处理这个。ScriptException但是是检查异常,所以编译器会强迫你处理这个Exception,要么将代码块插入 try catch 要么抛出它。

try-catch堵塞

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 类声明 -

public class ScriptException extends Exception{...}

请查找更多信息 -

于 2013-03-04T05:46:05.040 回答
0

您可以执行以下操作:

// .. 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);

// ...

这应该是它。

于 2013-03-04T06:04:30.550 回答