- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 3k
Description
When I accidentally forget to remove a curly brace to remove/set in the entry editor, JabRef should show the user a meaningful error message. Right now only an exception popup is shown with the error message.
Steps to reproduce the behavior:
- Type in e.g. M{"u}}ller in a field.
- Try to save bib file.
I would like to have nice error message displayed when there is the "user"-readable error message here e.g. Error in field 'AUTHOR of entry Vanicek2012': Braces don't match. Field value: J. Van{\'i}}{\v{c}}ek directly presented in the popup. Maybe there could be also an invalid field notification/message so the user is informed before trying to save the file.
Log File
org.jabref.logic.exporter.SaveException: Problems saving:
  at org.jabref/org.jabref.gui.exporter.SaveDatabaseAction.saveDatabase(Unknown Source)
  at org.jabref/org.jabref.gui.exporter.SaveDatabaseAction.doSave(Unknown Source)
  at org.jabref/org.jabref.gui.exporter.SaveDatabaseAction.save(Unknown Source)
  at org.jabref/org.jabref.gui.exporter.SaveDatabaseAction.save(Unknown Source)
  at org.jabref/org.jabref.gui.exporter.SaveAction.execute(Unknown Source)
  at org.jabref/org.jabref.gui.actions.JabRefAction.lambda$new$2(Unknown Source)
  at org.jabref.merged.module/org.controlsfx.control.action.Action.handle(Unknown Source)
  at org.jabref.merged.module/org.controlsfx.control.action.Action.handle(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
  at org.jabref.merged.module/javafx.event.Event.fireEvent(Unknown Source)
  at org.jabref.merged.module/javafx.scene.control.MenuItem.fire(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.scene.control.ControlAcceleratorSupport.lambda$doAcceleratorInstall$1(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.scene.KeyboardShortcutsHandler.processAccelerators(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.scene.KeyboardShortcutsHandler.dispatchBubblingEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
  at org.jabref.merged.module/javafx.event.Event.fireEvent(Unknown Source)
  at org.jabref.merged.module/javafx.scene.Scene$KeyHandler.process(Unknown Source)
  at org.jabref.merged.module/javafx.scene.Scene.processKeyEvent(Unknown Source)
  at org.jabref.merged.module/javafx.scene.Scene$ScenePeerListener.keyEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(Unknown Source)
  at java.base/java.security.AccessController.doPrivileged(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleKeyEvent$1(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(Unknown Source)
  at org.jabref.merged.module/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.glass.ui.View.handleKeyEvent(Unknown Source)
  at org.jabref.merged.module/com.sun.glass.ui.View.notifyKey(Unknown Source)
  at org.jabref.merged.module/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
  at org.jabref.merged.module/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
  at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Error in field 'AUTHOR of entry Vanicek2012': Braces don't match. Field value: J. Van{\'i}}{\v{c}}ek
  at org.jabref/org.jabref.logic.bibtex.BibEntryWriter.writeField(Unknown Source)
  at org.jabref/org.jabref.logic.bibtex.BibEntryWriter.writeRequiredFieldsFirstRemainingFieldsSecond(Unknown Source)
  at org.jabref/org.jabref.logic.bibtex.BibEntryWriter.write(Unknown Source)
  at org.jabref/org.jabref.logic.exporter.BibtexDatabaseWriter.writeEntry(Unknown Source)
  at org.jabref/org.jabref.logic.exporter.BibDatabaseWriter.savePartOfDatabase(Unknown Source)
  at org.jabref/org.jabref.logic.exporter.BibDatabaseWriter.saveDatabase(Unknown Source)
  ... 42 more
Caused by: org.jabref.logic.bibtex.InvalidFieldValueException: Braces don't match. Field value: J. Van{\'i}}{\v{c}}ek
  at org.jabref/org.jabref.logic.bibtex.FieldWriter.checkBraces(Unknown Source)
  at org.jabref/org.jabref.logic.bibtex.FieldWriter.formatAndResolveStrings(Unknown Source)
  at org.jabref/org.jabref.logic.bibtex.FieldWriter.write(Unknown Source)
  ... 48 more
JabRef 5.1--2020-03-12--23034ce
Windows 10 10.0 amd64
Java 13.0.2
✔️ I have tested the latest development version from http://builds.jabref.org/master/ and the problem persists
