这是一个计算器应用程序。当我尝试编译时,会出现以下消息unreported exception javax.script.ScriptException; must be caught or declared to be thrown
我有一种感觉,这是因为课程设置为ActionEvent
. 我是学生,所以我还在学习:)
有任何想法吗?谢谢
\
在你的这个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();
ScriptEngine.html#eval
可以扔两个Exception
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{...}
请查找更多信息 -
您可以执行以下操作:
// .. 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);
// ...
这应该是它。