10. december 2001 - 22:20Der er
11 kommentarer og 2 løsninger
håndtering af exceptions
Hej.
Jeg har i to funktionslag. et funktionslag til at skrive oplysninger i en fil, og et funktionslag til at skrive i en database.
i disse funktionslag kan der forekomme en masse forskellige exceptions.
SQLexceptions (ingen forbindelse til server), IOexceptions (fejl i at skrive i fil) mm.
Disse exceptions vil jeg gerne have vist som noget fornuftigt på grænsefladen, evt. i en dialogbox.
Jeg er klar over at man kan lade funktionsklasserne \"throw\" disse exceptions videre til grænsefladen som har kaldt klasserne, lade grænsefladen opfange dem, hvorefter man kan smide dem i en:
men så er grænsefladen nødt til at kende alle de exceptions-typer som den kan risikere at få.
Mine spørgsmål er:
Er der ikke en lettere måde at gøre det her på? Kan man generere en dialogbox fra en klasse uden frame? Kan man fra grænsefladen hente funktionslagenes exceptions på en anden måde?
Du kan bruge dialogboksen alle steder fra, når bare du har importeret javax.swing. Hvad med noget i den her stil: }catch (Exception e){ JOptionPane.showMessageDialog(\"Der er sket en fejl\", e.getMessage()); }
Undskyld, det var noget vrøvl, jeg skrev. Jeg siider og roder med C#. Men hvis du bruger e.getMessage(), har du i hvert fald ikke nøde at kende alle fejl på forhånd
Jeg har skrevet min egen dialog \'fabrik\' som kan lave alle beskeder, og håndtere tekster hentet ud fra databaser hvori brugerne har defineret hvad teksten skal være og hvad der skal stå på knapperne. Dene klasse har en masse statiske metoder f.eks. visFejlBesked som tager en streng eller en component og en streng, dette sendes så til en standard JOptionPane.showOptionDialog. (hvis ingen ejer er første parameter null)
feks. sådan her: catch (Exception e){ DialogFactory.visFejlBesked( e.getMessage()); }
hvis du absolut vil have en ejer til dialogen, kan du jo lave en statisk metode på den yderste frame i dit hierarki, som kan returnere sig selv i en metode der hed getTopFrame().
Den bruges til at udskrive hvilke metodekald, der har har været for at komme til det sted, hvor fejlen opstår. På den måde kan man spore sin fejl baglæns, og findde ud hvorfor den opstår. Det er den udskrift du også får fra en EXception, der ikke catches.
Jeg forstår sikkert ikke hvad du mener men printStackTrace printer backtrace (altså funktionskaldetræet) for den fejl du har i hånden til standard error stream, printer writer eller printer stream
Tille: Det var det jeg mente, men din måde at udtrykke det på er vist mere præcis. Den er også god til debugging, bare med skærmudskrift. Også på de exceptions man fanger.
jeg tror mit svar var lidt utyeligt, men det jeg mente var blot at man godt kan sige: JOptionPane.showOptionDialog(null, \"OK\", \"Fejl\",DEFAULT_OPTION, WARNING_MESSAGE,null, options, options[0]);
takker og du har da ret, hvorfor gøre det mere besværligt end det er, men jeg tog en kopi fra min dialogfactory, og der kan alle parametre angives, enten af de statiske metoder, eller af klassen selv udfra tekststrengene i databasen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.