2013-03-04 92 views
0

这是一个计算器应用程序。当我尝试编译它时,会出现以下消息unreported exception javax.script.ScriptException; must be caught or declared to be thrown未报告的异常javax.script.ScriptException;必须被捕获或宣布被抛出

我有一种感觉,因为该类设置为ActionEvent。我是一名学生,所以我仍然在学习:)

任何想法?由于

\

+0

你的'ScriptEngineManager'代码在哪里? – subodh 2013-03-04 05:45:10

+0

你如何处理代码中的异常?您只是直接向用户提供异常,或者只是将其包含在错误消息中? – 2013-03-04 05:56:58

回答

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

// ... 

这应该是它。

0

在你这个actionPerformed方法行se.eval(createEquasion);抛出ScriptException。你必须处理这个Excpetion。

添加以下代码complie类

Object result = null; 
      try { 
       result = se.eval(createEquasion); 
      } catch (ScriptException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      if (result != null) 
       finalAnswer = result.toString(); 
0

ScriptEngine.html#eval可以抛出2 Exception

  1. NullPointerException异常
  2. ScriptException

NullPointerException是RuntimeException的那么编译器w ^生病不会强迫你处理这个。但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{...}

请找到更多的信息 -

相关问题