2017-04-10 7 views
1

イベントハンドラを使用してプログラムからデータを保存しようとしています。ハンドラをJavaで保存する

private class SaveMenuHandler implements EventHandler<ActionEvent> { 
    public void handle(ActionEvent e) { 
     try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Student.dat"));) { 

      oos.writeObject(model); 
      oos.flush(); 

      alertDialogBuilder("Information Dialog", "Save success", "Student Profile saved to StudentProfile.dat"); 

     } 
     catch (IOException ioExcep){ 
      System.out.println("Error saving"); 
     } 

    } 
} 

このコードは、ちょうどすべてのヘルプは高く評価されコンソール

に私に「保存エラー」を与える: ここで私は、コントローラを持っているコードです。

はここでエラーがあります:あなたは、正確なエラーメッセージを見ることができるように

Error saving 
java.lang.Exception 
    at controller.ProfileController$SaveMenuHandler.handle(ProfileController.java:194) 
    at controller.ProfileController$SaveMenuHandler.handle(ProfileController.java:1) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) 
    at javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.scene.control.MenuItem.fire(MenuItem.java:462) 
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405) 
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$343(ContextMenuContent.java:1358) 
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) 
    at javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3757) 
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485) 
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762) 
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:380) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:294) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:416) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:415) 
    at com.sun.glass.ui.View.handleMouseEvent(View.java:555) 
    at com.sun.glass.ui.View.notifyMouse(View.java:937) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
    at java.lang.Thread.run(Unknown Source) 
+0

ありがとうございます。私が何を無視しているのか、少し具体的になりますか? – SPatel

+1

現在のコードでは、この例外が発生していません。 'Exception'は' IOException'のサブクラスではなく、 'ioExcep'のスタックトレースを出力していないことを意味しますが、おそらく例外として、スタックトレースをコンソールに出力するために作成したものです。 – fabian

+0

ProfileControllerライン194とライン1は何ですか? – Sedrick

答えて

0

あなたのcatchブロック内のコードを変更する必要があります。あなたのコードは次のようになります。プログラムを再実行し、生成されるエラーメッセージを投稿してください。

private class SaveMenuHandler implements EventHandler<ActionEvent> { 
    public void handle(ActionEvent e) { 
     try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Student.dat"));) { 

      oos.writeObject(model); 
      oos.flush(); 

      alertDialogBuilder("Information Dialog", "Save success", "Student Profile saved to StudentProfile.dat"); 

     } 
     catch (IOException ioExcep){ 
      System.out.println("Error saving"); 
      //Print the complete error message 
      ioExcep.printStackTrace(); 
     } 

    } 
} 
+0

完全なエラーメッセージを投稿できますか?それは何が間違っているのかを見るのに役立ちます。そして、覚えておいてください:エラーメッセージは単なるエラーではありません。ソフトウェアの問題を解決するのはあなたの鍵です。 – Max

+0

元の投稿を編集しました。私は自分自身を見渡しましたが、何が間違っているのか理解できません。 – SPatel

+0

@fabianあなたは正しいです。彼の例外は "ioException"という名前になっていませんでした。コードの最後の行はioExcep.printStackTrace(); – Max