0

これは電卓アプリです。コンパイルしようとすると、次のメッセージが表示されますunreported exception javax.script.ScriptException; must be caught or declared to be thrown

クラスが に設定されているためだと思いActionEventます。私は学生なので、まだ勉強中です:)

何か案は?ありがとう

\

4

3 に答える 3

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 に答える
0

このactionPerformedメソッドでは、行se.eval(createEquasion);は throwingScriptExceptionです。この例外を処理する必要があります。

以下のコードを追加して、クラスをコンパイルします

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#eval2つ投げることができますException

  1. NullPointerException
  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 に答える