未报告的异常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
代码在哪里?您如何处理代码中的异常?您是直接向用户提供异常,还是将其包装在错误消息中?