Designfrage, mal wieder ^^

Status
Nicht offen für weitere Antworten.

diggaa1984

Top Contributor
hiho,

ich grübel nu schon wieder länger an einem eher kleinen Problem.

Folgendes ist vorhanden (Editor für kontextfreie Grammatiken):
- Backend mit Daten der nutzbaren Grammatiken, Funktionen für Einlesen von Datein
(Grammatiken, definierte Makros, csv-datein und sowas) .. sonstiges, was für das
Problem nicht relevant ist

- Frontend weches lediglich die GUI umsetzt.

Der Editor wird auf 2er-lei Weise genutzt. Einmal als Standalone-Software mit GUI für normale Arbeit an lokalen Rechnern, und zum anderen als reine Funktions"bibliothek" auf einem Server, welcher Jobs bekommt und bei Bedarf eben Files mit meinem Backend parst.

Nun ist es so, das ich beim Einlesen der ganzen Datein (Grammatiknotationen, Makrodefinitionen, Syntaxmapping-definitionen) auf folgende Situationen stossen kann.

  • Grammatik einlesen

    sollten hier Fehler (falsche Notation der Grammatik) auftauchen, kann die Grammatik nicht korrekt erkannt/genutzt werden, und der Import wird abgebrochen. Makros und SynMapping brauch ich dann nicht erst einlesen.
  • Grammatikspezifische Makrodatei einlesen

    hier kann es sein, das einzelne Makros nicht korrekt definiert wurden (fehlende Trennzeichen oder Parameterklammern etc.). Alle erkannten Makros kann man ohne Probleme verwenden. Die nicht erkannten, sind auch im Backend nicht verfügbar, das heisst beim Parsen gäbe es auch keine Probleme. Im Zweifelsfall würde die Nutzung eines nicht erkannten Makros dazu führen, das er einen Teilstring beim Parsen nicht erkennt. Ist ja weniger schlimm.
    Der 2. Fall wäre, das die Makros zirkulär sich selbst benutzen. Eine Prüfung dessen habe ich bereits eingebaut und diese funktioniert auch, allerdings sind damit alle Makros unbrauchbar (würde später im Stackoverflow enden) und ich müsste hier eine Nachricht an den Nutzer herausschicken, damit er das Problem beheben kann.
    Bis hierhin wäre Grammatikdatei 100% richtig erkannt, und Makros eben nur teilweise oder mit zirkulärer Nutzung erkannt.
  • Grammatikspezifische SynMappingdatei einlesen

    hier habe ich noch keine Funktion dazu implementiert, wäre aber den Makros ähnlich. Das heisst es könnte sein, das einige Definitionen erkannt werden und einige nicht, da sie nötige Struktur nicht aufweisen.
    Dieser Schritt kann ebenfalls erfolgen sobald die Grammatik korrekt erkannt wurde.


Die Sache ist nun, das ich beim Einlesen einer Grammatik und ihrer spezifischen Datein versch. Stati haben kann.

Alles korrekt ; Fehler beim Import der Grammatik ; teilweise fehlenden Makros ; zirkuläre Makronutzung ; teilweise erkannte Mappingdefinitionen .. etc. (zu jedem Fehler kann ich ja theoretisch angeben was nicht korrekt war)

Wie kann ich das ganze nun so verpacken das ich nach Aufruf einer Methode wie
Code:
public ??? importNewGrammar(...)
(lädt alle nötigen Bestandteile einer Grammatik) weiss mit welchen Ergebnis was geladen werden konnte?

Es wäre auch denkbar, das später weitere externe Infos geladen werden, wer weiss was sich die Professorin noch alles ausdenkt :D

Eigentlich sehe ich nur die Chance eine eigene Klasse zu erstellen, in der jede Methode zum Einlesen der Infos hinterlegt wie der Stand der Dinge ist, aber das gefällt mir nicht ganz, wenn es um die Auswertung dieses Objektes geht.
 
Zuletzt bearbeitet:
B

bygones

Gast
ohne den gesamten Beitrag gelesen zu haben:

a) untersch. exceptions je nach Fehlerfall - bei erfolg natuerlich keine... und void als parameter
b) Status Objekt (enum) mit definierten Stati und das als Rueckgabewert

a) kann man auch eine Exception nehmen und der fehler ist dann die Exceptionmessage
 

diggaa1984

Top Contributor
würde aber dann nicht sowas entstehen wie:
Java:
try {
    readGrammarFile();
    readMacroFile();
} catch (GrammarFileException gfe) {
      //quit all further actions   
} catch (MacroFileException mfe) {
      //go on reading mapping-infos
      try {
        readSynmapFile();
    } catch (SynMapFileException smfe) {
        //foo
    }
}

also nu weil im macro was nicht hinhaut, muss ich dennoch die syntaxmapping-definitionen einlesen können .. und sone konstrukte wie da oben würden doch mit deiner vorstellung entstehen oder?

also Grammar-Exception ist ok, da flieg ich gerne komplett raus, aber bei den anderen, dürfen Fehler ja auftauchen, es fehlen dem Nutzer lediglich (von ihm falsch) definierte Sachen zum arbeiten. Das ist ja vertretbar.
 

hdi

Top Contributor
Du musst es doch nicht schachteln.

Java:
try {
    readGrammarFile();
} catch (GrammarFileException gfe) {
      //quit all further actions   
}

try {
    readMacroFile();
} catch (MacroFileException mfe) {
      // was auch immer
}

readSynmapFile();

Wenn eine Excpetion geworfen wird bricht nicht die komplette Methode ab, sondern es wird in den catch-Block gesprungen und nach dessen Ausführung nach dem catch-Block weitergemacht.
In diesem Fall wird also readSynmapFile() immer ausgeführt, egal ob es bei einer der beiden vorigen try-Blöcke, oder bei beiden, oder bei keiner, zu einer Exception kam.
Eben weil sie davor abgefangen werden.

Und außerdem gibt es noch finally, das wird immer ausgeführt:

Java:
try{
   // do stuff
}
catch (Exception e){
   // abort the method
   return;
}
finally{
   // but do this ALWAYS
}

der Code im finally-Block wird auch ausgeführt, wenn eine Exception fliegt und du per return; aus der Methode rausgehst! Also finally wird echt IMMER ausgeführt
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
ok wird der code doch lesbarer als angenommen, aber angenommen die grammatik wird ordnungsgemäß importiert, makros gibts einige fehler, und beim syntaxmapping ist meinetwegen auch etwas fehlerhaft .. wie geb ich das dem nutzer am besten an!?

ich kann eigentlich nur in den catch-blocks nen objekt bearbeiten und jeweilige infos reinschreiben .. aber aus unerfindlichem grund gefällt mir das nicht wirklich :D Zumal Exceptions im Sinne von "ich nenn dir die fehlerhaften Stellen und den Rest erkenne ich aber dennoch als korrekt an und damit kannst du weiterarbeiten" auch fehl am Platz sind.
 

hdi

Top Contributor
Du kannst einfache JOptionPanes anzeigen wenn Fehler kommen. Die sind modal, d.h. blockieren das Programm automatisch bis der User die Meldung weggeklickt hat.
Und wenn ein Fehler so schwer ist, dass du nicht einfach weiter machen möchstest, dann machste halt ne Meldung "Schwerer Fehler" und beendest die Methode einfach mittels return, oder meinetwegen sogar "SEHR schwerer Fehler" und machst ein System.exit ;)
 

diggaa1984

Top Contributor
fänd ich nu nich so super nutzerfreundlich :D ... hm ich glaub mir bleibt nur der weg über eine "WhatHappenedWhileImportingGrammarClass" :oops:
 
G

Gast2

Gast
Du kannst auch alle Fehlermessage "sammeln" machst dir eigenen Container am besten.
Und dann zeigst im Fehlerdialog alle Fehler an die gemacht wurden. Kannst auch schön mit hmtl noch gestalten usw.
Es sind mehrere Fehler aufgetreten
- fehler 1
- fehler 2
usw.

swingx hat schöne componenten dazu.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Designfrage/Objektorientierung Java Basics - Anfänger-Themen 19
J Einfache Designfrage Java Basics - Anfänger-Themen 4
S Designfrage zu mutable and immutable Java Basics - Anfänger-Themen 23
B Designfrage Java Basics - Anfänger-Themen 2
H Designfrage: Welche Liste? Java Basics - Anfänger-Themen 3
S designfrage Java Basics - Anfänger-Themen 7
haemi Designfrage - Strategiemuster. Java Basics - Anfänger-Themen 6
K Interface Designfrage Java Basics - Anfänger-Themen 12
S Designfrage: Packageverwaltung Java Basics - Anfänger-Themen 3
G Designfrage: Daten einlesen und Fortschrittsdialog anzeigen Java Basics - Anfänger-Themen 5
T Designfrage Swing Java Basics - Anfänger-Themen 2
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
W In alten Code zurück- und dort wieder zurechtfinden? Java Basics - Anfänger-Themen 17
I Passwort in Datenbank speichern um später wieder auszulesen Java Basics - Anfänger-Themen 5
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
D Codeblöcke, die immer wieder im Programmverlauf benötigt werden Java Basics - Anfänger-Themen 5
TimoN11 Array -> Schleife wieder von vorne durchlaufen lassen Java Basics - Anfänger-Themen 1
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
J Selektiertes Element von jComboBox zwischenspeichern und wieder einsetzen Java Basics - Anfänger-Themen 0
S Nutzereingabe splitten und in string array wieder ausgeben. Java Basics - Anfänger-Themen 1
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
N Wie kann ich einen String wieder zusammensetzen und ausgeben lassen? Java Basics - Anfänger-Themen 9
C Array-Eintrag wieder auf Null setzen Java Basics - Anfänger-Themen 3
W Verschachtelte Objekte wieder auspacken Java Basics - Anfänger-Themen 3
M Array immer wieder um ein Element erweitern Java Basics - Anfänger-Themen 6
CptK Methoden Event bei gedrückter Maustaste immer wieder ausführen Java Basics - Anfänger-Themen 1
CptK Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen Java Basics - Anfänger-Themen 2
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
CptK Datentypen Verdrehte Wörter wieder herstellen Java Basics - Anfänger-Themen 21
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
I Methoden Schleife immer wieder durchlaufen lassen Java Basics - Anfänger-Themen 15
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
M Schleifenergebnis in selbiger wieder verwenden Java Basics - Anfänger-Themen 7
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
L jar, class, java und wieder zurück Java Basics - Anfänger-Themen 8
M aus Fenster anderes Fenster öffnen und wieder umgekehrt Java Basics - Anfänger-Themen 5
J Fenster wieder unsichtbar machen Java Basics - Anfänger-Themen 2
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
S Sound stoppen und nach Pause wieder abspielen Java Basics - Anfänger-Themen 6
T while schleife starten , beeneden und wieder Starten Java Basics - Anfänger-Themen 8
I Zähler, der erst wieder zählt nachdem Pixel wieder andere Farbe hat Java Basics - Anfänger-Themen 2
B javax.ejb.Timer wieder starten? Java Basics - Anfänger-Themen 0
N Methode auslagern mal wieder Java Basics - Anfänger-Themen 8
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
Bluedaishi for schleife um Dateien wieder zusammen zu fügen Java Basics - Anfänger-Themen 11
I SHA512 verschlüsseln und dann wieder auslesen? Java Basics - Anfänger-Themen 35
F Timer abbrechen und wieder starten Java Basics - Anfänger-Themen 5
J KeyListener - mal wieder... Java Basics - Anfänger-Themen 2
B Listener beim Laden (deserialize) wieder hinzufügen bzw. mitspeichern? Java Basics - Anfänger-Themen 3
GadgetSofa .txt Datei erstellen und gleich wieder Löschen? Java Basics - Anfänger-Themen 12
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
M Tabelle aktualisieren (mal wieder) Java Basics - Anfänger-Themen 10
M Erste Schritte Tabelle aktualisieren (mal wieder) Java Basics - Anfänger-Themen 7
M Zahlen als Bytes in eine Datei speichern, daraus wieder auslesen Java Basics - Anfänger-Themen 2
D Schon wieder double -.- Java Basics - Anfänger-Themen 4
R Switch: Nach durchlaufen des Case wieder zum Menü Java Basics - Anfänger-Themen 3
K For Each Schleife wieder von Beginn an iterieren Java Basics - Anfänger-Themen 12
L Und schon wieder :=( Java Basics - Anfänger-Themen 3
T Arbeitsspeicher wieder freigeben Java Basics - Anfänger-Themen 21
Ernesto95 BufferedImage Teilbereich wieder transparent setzen Java Basics - Anfänger-Themen 16
J Schon wieder Rekursionsproblem Java Basics - Anfänger-Themen 3
S Erste Schritte Hochgescrolltes Menu nach MouseOut wieder "runter holen" Java Basics - Anfänger-Themen 3
H Datei in kleine Stücke teilen und wieder erkennen Java Basics - Anfänger-Themen 10
B Variable wird einfach so wieder auf "null" gesetzt Java Basics - Anfänger-Themen 12
B Cookies auslesen und wieder schreiben Java Basics - Anfänger-Themen 2
T wieder mal Serialization :-) Java Basics - Anfänger-Themen 10
J Mal wieder ein kleines Toleranzproblem Java Basics - Anfänger-Themen 20
T text von textfeld auslesen und wieder reinschreiben Java Basics - Anfänger-Themen 10
T Benutzereingabe in form von string wieder ausgeben in JOptionPane Java Basics - Anfänger-Themen 14
F Input/Output ArrayList presistent speichern und wieder auslesen Java Basics - Anfänger-Themen 4
D Ausgegebene Worte wieder löschen. Java Basics - Anfänger-Themen 6
B Heap-Speicher wieder freigeben Java Basics - Anfänger-Themen 10
P Mal wieder JTable Java Basics - Anfänger-Themen 7
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
M Mal wieder Probleme mit Date Java Basics - Anfänger-Themen 9
M Threads Thread ist nur kurz interrupted, dann wieder nichtmehr Java Basics - Anfänger-Themen 6
K Mal wieder ein Problem mit If / Else Java Basics - Anfänger-Themen 10
A Wie kann man etwas von Typ Image wieder löschen? Java Basics - Anfänger-Themen 7
J Threads Threads anhalten und wieder fortführen Java Basics - Anfänger-Themen 9
P Dropdownbox nach hinzufügen wieder öffnen Java Basics - Anfänger-Themen 7
A Daten speichern und wieder in ein Array laden Java Basics - Anfänger-Themen 4
B Datentypen Inhalt zum Iterator wieder aufrufen? Java Basics - Anfänger-Themen 10
Os-Programming Checkbox immer wieder überprüfen Java Basics - Anfänger-Themen 13
S Datei einlesen und Ergebnis wieder in Datei schreiben Java Basics - Anfänger-Themen 5
J Datei einlesen teile aus lines ändern und wieder rausschreiben. Java Basics - Anfänger-Themen 4
M String-Array-Element wieder null zuweisen Java Basics - Anfänger-Themen 16
K Wie kann ich aus jar Dateien wieder normale Klassen generieren? Java Basics - Anfänger-Themen 7
F Mal wieder: Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 9
F Collections Datenbankdaten in einer Map speichern, bearbeiten, sortieren und wieder in Datenbank schreiben Java Basics - Anfänger-Themen 20
B Datentypen Werte in einen Array einlesen und danach die beiden höchsten Werte wieder ausgeben Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben