![]() |
|
|
|||||||
| Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | ||||||||||||||||
|
Inkognito
Registriert seit: 05.01.2005
Beiträge: 107
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
hi leute,
hier ein ausschnitt aus meinem code: Code:
try{
tempTagContent = tempMP3File.getAlbum();
}
catch(FrameDamagedException fde){
String album = "null";
System.out.println("album null");
}
(Sie leitet sie aus TextFrame.read() und TextFrameEncoding.read() weiter --> siehe Stack unten). trotzdem wird mein string "album null" niemals angezeigt und das abfangen klappt nicht , obwohl im eclipse genau an dieser stelle die FrameDamagedException auftritt
Ich konnte bisher noch jede Exception abfangen aber hier klappt es nicht. |
|||||||||||||||
|
|
||||||||||||||||
| #2 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 11.05.2004
Beiträge: 6.519
Blog-Einträge: 3
Abgegebene Danke: 0
Erhielt 5 Danke für 5 Beiträge
|
Deine Methode hat nicht noch zufällig eine throws Klausel im Kopf??
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub) Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/ |
|
|
| #3 (permalink) | |
|
Inkognito
Themenstarter
Registriert seit: 05.01.2005
Beiträge: 107
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
die methoden mp3.TextFrame.read(),TextFrameEncoding.read() und MP3File.getAlbum() haben throws FrameDamagedException nach der methodensignatur stehen.
also zB in MP3File : public TagContent getAlbum() throws FrameDamagedException { ...} in meiner methode in der ich auf getAlbumzugreife steht kein throws mehr..dort versuche ich ja die exception abzufangen... |
|
|
| #5 (permalink) | |
|
Inkognito
Themenstarter
Registriert seit: 05.01.2005
Beiträge: 107
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
leider nicht.
Code:
//in class textframe
public static TagContent read(boolean encoding, ID3v2 id3v2, String type)
throws FrameDamagedException
{
TagContent ret = new TagContent();
try
{
byte v2cont[] = ((ID3v2Frame)id3v2.getFrame(type).elementAt(0)).getContent();
Parser parse = new Parser(v2cont, encoding);
try
{
ret.setContent(parse.parseText());
}
catch(ParseException e)
{
throw new FrameDamagedException();
}
}
catch(ID3v2Exception id3v2exception) { }
return ret;
}
package de.vdheide.mp3;
/**
* Thrown when a frame is damaged (e.g. too short)
*/
public class FrameDamagedException extends Exception {
}
auch die ParseException ist von Exception abgeleitet
package de.vdheide.mp3;
/**
* Thrown when an error in Parser occurs
*/
public class ParseException extends Exception {
}
|
|
|
| #6 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.10.2003
Beiträge: 7.557
Blog-Einträge: 7
Abgegebene Danke: 18
Erhielt 47 Danke für 45 Beiträge
|
mhm seh ich das richtig, dass dir der Stack ausgegeben wird, wenn du ihn im catch Block schreibst, die System.out.println ausgabe aber nciht ?
__________________
Test Driven Development is like sex. If you dont like it, you probably aint doing it right ! Proleptic programming is like driving 15 on the freeway because you will exit once and pass a school area ! |
|
|
| #8 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 11.05.2004
Beiträge: 6.519
Blog-Einträge: 3
Abgegebene Danke: 0
Erhielt 5 Danke für 5 Beiträge
|
Zeig mal die komplette Methode wo das try/catch drinnen ist!
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub) Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/ |
|
|
| #9 (permalink) | |
|
Stammbenutzer
Byte
Registriert seit: 18.05.2005
Beiträge: 98
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
ich hab auch kA woran das liegen könnte aber die variable
Code:
String album = "null"; sie wird nirgends benutzt und kann auch nicht von woanders benutzt werden versuch doch mal: Code:
{
e.printStackTrace();
throw new FrameDamagedException();
}
__________________
In a world without walls or fences, What use are Windows and Gates. |
|
|
| #10 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.10.2003
Beiträge: 7.557
Blog-Einträge: 7
Abgegebene Danke: 18
Erhielt 47 Danke für 45 Beiträge
|
wenn du mit einer IDE arbeitest nutze mal den debugger. Wann wird wo die Exception geworfen, wo landet er dann und so weiter
__________________
Test Driven Development is like sex. If you dont like it, you probably aint doing it right ! Proleptic programming is like driving 15 on the freeway because you will exit once and pass a school area ! |
|
|
| #11 (permalink) | |
|
Inkognito
Themenstarter
Registriert seit: 05.01.2005
Beiträge: 107
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
@Solour
ja die Stringvariable album hab ich nun auch außerhalb von try-catch definiert... mich verblüfft es trotzdem das ich die methoden die die exceptions werfen nicht catchen kann...das gibts doch gar nicht... |
|
|
| #12 (permalink) | |
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 06.09.2004
Beiträge: 5.207
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Code:
try{
tempTagContent = tempMP3File.getAlbum();
}
catch(FrameDamagedException fde){
String album = "null";
System.out.println("album null");
}
durch ein "zu grosses" catch?
__________________
If you have nothing bad to say, say nothing. |
|
|
| #14 (permalink) | |
|
Inkognito
Themenstarter
Registriert seit: 05.01.2005
Beiträge: 107
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
was bedeutet ein zu grosses catch?
hier die methode: hat mein fehler evtl damit etwas zu tun,dass um meine inneren FrameDamagedExceptions-Catch-Blöcke noch der äußere catch-block ist der andere exceptions abfängt? die println´s werden bei ausführen des programms nämlich auch nicht angezeigt sorry aber der code ist ziemlich lang und die methode geht unten eig sogar noch weiter. Code:
public void mehrereEintraegeInDB() {
//eintrag in tabelle datentraeger
nurEinEintragInDbEintragen();
checkenObEingelesenerDatentraegerInDBUndNrLesen(); //muss gemacht werden damit nrDesMediums aus DB gelesen wird
//System.out.println("nr-medium = "+medienErkennung.tempDatenTraeger.nrDesMediums);
//einträge in tabelle datei
//String dateiQuery = "";
String dateiEndung = "";
Vector v = medienErkennung.tempDatenTraeger.mp3sAufMedium;
MySQLVerwaltung mp3MySQL = new MySQLVerwaltung(url,user,password,"");
for (int i = 0; i < v.size(); i++) {
//dateiendung ermitteln
StringTokenizer st = new StringTokenizer(((File)v.elementAt(i)).getName(),".");
do{dateiEndung = st.nextElement().toString().toLowerCase();
}while(st.hasMoreElements());
String dateTime = aenderungsDatumBestimmen(((File)v.elementAt(i)));
String verzeichnisAufMedium = verzeichnisAufMediumBestimmen(((File)v.elementAt(i)));
// ein "\" im verzeichnisname führt zu syntaxfehler im mysql
//deswegen noch ein "\"hinzufügen
verzeichnisAufMedium = verzeichnisAufMediumMitUmgedrehtenBackSlash(verzeichnisAufMedium);
verzeichnisAufMedium = this.kommasInDateiNameEntfernen(verzeichnisAufMedium);
verzeichnisAufMedium = this.hochKommasInDateiNameEntfernen(verzeichnisAufMedium);
//int dateiGroesse = ((int)((File)v.elementAt(i)).length())/(1024*1024);
double dateiGroesseDouble = Math.rint( ((double)((File)v.elementAt(i)).length()/(1024*1024)) * 100 ) / 100.;
float dateiGroesseFloat = (float)dateiGroesseDouble;
//System.out.println("gefundene dateiGroesse für datei "+((File)v.elementAt(i)).getName()
//+" = " +dateiGroesseFloat);
//bei dateiname kommas entfernen da sonst mysql-syntax nicht stimmt
String nameOhneKommata = "";
if(((File)v.elementAt(i)).getName().indexOf(",")!= -1){
//System.out.println("gefundener name mit komma = "+((File)v.elementAt(i)).getName());
nameOhneKommata = kommasInDateiNameEntfernen(((File)v.elementAt(i)).getName());
}
if(((File)v.elementAt(i)).getName().indexOf("'")!= -1){
//System.out.println("gefundener name mit hochkomma = "+((File)v.elementAt(i)).getName());
nameOhneKommata = hochKommasInDateiNameEntfernen(((File)v.elementAt(i)).getName());
}
else{
nameOhneKommata = ((File)v.elementAt(i)).getName();
}
mp3MySQL.anfrageString = "insert into DATEI values(null,'"+dateiEndung+"'," +
dateiGroesseFloat+",'"+nameOhneKommata+"'," +
dateTime+",'"+verzeichnisAufMedium+"',"+medienErkennung.tempDatenTraeger.nrDesMediums+");";
//System.out.println(dateiQuery);
//dateien einzeln eintragen
try {
mp3MySQL.sqlAnfrageAnDBSchicken();
} catch (SQLException e) {
//System.out.println(e.toString());
}
//einträge in tabelle mp3File
int dateinr = -1; //ist der fremdschlüssel in der tabelle mp3file von tabelle datei
try {
System.out.println("vor try fs dateinr holen");
//fs dateinr holen
mp3MySQL.anfrageString = "select dateinr from DATEI where dateiEndung = '"+
dateiEndung+"' and dateiName = '"+ nameOhneKommata +
"' and datumLetzteDateiAenderung = "+dateTime+" and verzeichnisAufMedium = '"+
verzeichnisAufMedium+"' and nrDesMediums = "+ +medienErkennung.tempDatenTraeger.nrDesMediums+";";
//System.out.println("anfragestring = "+mp3MySQL.anfrageString);
ResultSet res = mp3MySQL.getResultSet();
while(res.next()){
dateinr = res.getInt(1);
}
//System.out.println("gefundene dateinr = "+dateinr);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(dateinr != -1){
System.out.println("vor try mp3file");
try {
String verzeichnisAufMediumUnbehandelt = verzeichnisAufMediumBestimmen(((File)v.elementAt(i)));
String nameDerMP3Datei = ((File)v.elementAt(i)).getName();
System.out.println("vor mp3file anlegen");
MP3File tempMP3File = new MP3File(verzeichnisAufMediumUnbehandelt,nameDerMP3Datei);
System.out.println("nach mp3file anlegen");
System.out.println("vor titel anlegen");
//titel bestimmen
TagContent tempTagContent;
try {
tempTagContent = tempMP3File.getTitle();
} catch (FrameDamagedException e3) {
// TODO Auto-generated catch block
tempTagContent = null;
//e3.printStackTrace();
}
String songTitel;
if(tempTagContent == null){
songTitel = " ";
}
else{
songTitel = tempTagContent.getTextContent();
System.out.println("nach titel anlegen");
if(songTitel != null){
if(songTitel.indexOf("'")!= -1){
songTitel = this.hochKommasInDateiNameEntfernen(songTitel);
}
if(songTitel.indexOf(",")!= -1){
songTitel = this.kommasInDateiNameEntfernen(songTitel);
}
}
}
/*if(songTitel != null && songTitel.equals("")){
songTitel = null;
}*/
//System.out.println("songtitel = "+songTitel);
//interpret bestimmen
System.out.println("vor interpret");
try{
tempTagContent = tempMP3File.getArtist();
}
catch(FrameDamagedException e3) {
// TODO Auto-generated catch block
tempTagContent = null;
//e3.printStackTrace();
}
String interpret;
if(tempTagContent == null){
interpret = " ";
}
else{
interpret = tempTagContent.getTextContent();
System.out.println("nach interpret");
if(interpret != null){
if(interpret.indexOf("'")!= -1){
interpret = this.hochKommasInDateiNameEntfernen(interpret);
}
if(interpret.indexOf(",")!= -1){
interpret = this.kommasInDateiNameEntfernen(interpret);
}
}
if(interpret != null && interpret.equals("")){
interpret = null;
}
}
//System.out.println("interpret = "+interpret);
//trackläenge
System.out.println("vor länge");
try{
tempTagContent = tempMP3File.getTime();
}
catch(FrameDamagedException e3) {
// TODO Auto-generated catch block
tempTagContent = null;
//e3.printStackTrace();
}
String tracklaenge;
if(tempTagContent == null){
tracklaenge = " ";
}
else{
tracklaenge = tempTagContent.getTextContent();
System.out.println("nach länge");
if(tracklaenge == null){
long trackDauerInSekunden = tempMP3File.getLength();
int stunden = (int)trackDauerInSekunden/(60*60);
int minuten = ((int)trackDauerInSekunden - (stunden * 3600))/60;
int sekunden = (int)trackDauerInSekunden - (stunden * 3600) - (minuten * 60);
tracklaenge = stunden+":"+minuten+":"+sekunden;
//System.out.println("trackdauer = "+stunden+":"+minuten+":"+sekunden);
}
}
//System.out.println("tracklaenge = "+tracklaenge);
//genre
try{
tempTagContent = tempMP3File.getGenre();
}
catch(FrameDamagedException e3) {
// TODO Auto-generated catch block
tempTagContent = null;
//e3.printStackTrace();
}
String genre;
if(tempTagContent == null){
genre = " ";
}
else{
genre = tempTagContent.getTextContent();
if(genre != null){
if(genre.indexOf("'")!= -1){
genre = this.hochKommasInDateiNameEntfernen(genre);
}
if(genre.indexOf(",")!= -1){
genre = this.kommasInDateiNameEntfernen(genre);
}
}
if(genre != null && genre.equals("")){
genre = null;
}
if(genre != null){
int start = genre.indexOf("(");
int stop = genre.indexOf(")");
//wenn (genreNr) in genreTag
if(stop != -1 && start != -1){
//System.out.println("nr im tag; genre vor zuordnung= "+genre);
int genreNr = Integer.parseInt(genre.substring(start+1,stop));
genre =genreMp3NachNrZuordnen(genreNr); //genreName zuordnen
//tempTagContent = tempMP3File.getTitle();
//System.out.println("nr im tag; genre nach zuordnung= "+genre
// +"; genrenr = "+genreNr+" für den titel "+tempTagContent.getTextContent());
}
/*else{
System.out.println("keine nr im tag; genre = "+genre);
}*/
/*for (int genreNr = 0; genreNr < 116;genreNr++){
//wenn zahl im genre gefunden
if(genre.indexOf(""+genreNr)!= -1){
genre =genreMp3NachNrZuordnen(genreNr);
}
}*/
}
}
//System.out.println("genre = "+genre);
//bitrate
int bitrate;
bitrate = tempMP3File.getBitrate();
}
if(tempTagContent == null){
bitrate = -1;
}
//System.out.println("bitrate = "+bitrate);
//jahr
String jahr;
try{
tempTagContent = tempMP3File.getYear();
}
catch(FrameDamagedException e3) {
// TODO Auto-generated catch block
tempTagContent = null;
//e3.printStackTrace();
}
if(tempTagContent == null){
jahr = "-1";
}
else{
jahr = tempTagContent.getTextContent();
if(jahr != null){
if(jahr.indexOf("'")!= -1){
jahr = this.hochKommasInDateiNameEntfernen(jahr);
}
if(jahr.indexOf(",")!= -1){
jahr = this.kommasInDateiNameEntfernen(jahr);
}
}
if(jahr != null && jahr.equals("")){
jahr = null;
}
}
//System.out.println("jahr = "+jahr);
//album
try{
tempTagContent = tempMP3File.getAlbum();
}
catch(FrameDamagedException fde){
tempTagContent = null;
//System.out.println("album null");
}
catch(TagFormatException tfe){
tempTagContent = null;
}
String album;
if(tempTagContent == null){
album = " ";
}
else{
album = tempTagContent.getTextContent();
if(album != null){
if(album.indexOf("'")!= -1){
album = this.hochKommasInDateiNameEntfernen(album);
}
if(album.indexOf(",")!= -1){
album = this.kommasInDateiNameEntfernen(album);
}
}
if(album != null && album.equals("")){
album = null;
}
}
//System.out.println("album = "+album);
// mp3dateien anlegen
mp3MySQL.anfrageString = "insert into mp3file values(null,'"+songTitel+"','"+
interpret+"','"+tracklaenge+"','"+genre+"',"+bitrate+","+jahr+",'"+album+"',"+dateinr+");";
//System.out.println("mp3MySQL.anfrageString ="+mp3MySQL.anfrageString);
try {
mp3MySQL.sqlAnfrageAnDBSchicken();
} catch (SQLException e4) {
// TODO Auto-generated catch block
e4.printStackTrace();
}
} catch (ID3v2WrongCRCException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (ID3v2DecompressionException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (ID3v2IllegalVersionException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (NoMP3FrameException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
|
|
|
| #15 (permalink) | |
|
Inkognito
Themenstarter
Registriert seit: 05.01.2005
Beiträge: 107
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
in folgenden 2 methoden von MP3File treten die nicht abfangbaren FrameDamagedExceptions auf
Code:
public TagContent getGenre()
throws FrameDamagedException
{
TagContent ret = new TagContent();
byte v2cont[] = (byte[])null;
try
{
v2cont = ((ID3v2Frame)id3v2.getFrame("TCON").elementAt(0)).getContent();
}
catch(ID3v2Exception id3v2exception) { }
if(v2cont == null)
{
try
{
int v1cont = id3.getGenre();
ret.setContent("(" + v1cont + ")");
}
catch(ID3Exception e) { }
} else
{
Parser parse = new Parser(v2cont, true);
try
{
ret.setContent(parse.parseText());
}
catch(ParseException e)
{
throw new FrameDamagedException();
}
}
return ret;
}
public TagContent getAlbum()
throws TagFormatException
{
TagContent ret = TextFrameEncoding.read(id3v2, "TALB");
if(ret.getTextContent() == null)
try
{
ret.setContent(id3.getAlbum());
}
catch(NoID3TagException noid3tagexception) { }
return ret;
}
und getGenre() bei ID3Exception nichts throwt ? |
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Exception abfangen? | Markus123 | Java Basics - Anfänger-Themen | 3 | 15.11.2008 14:00 |
| Programm würft Exception, kann sie aber nicht abfangen! | BoZA | Java Basics - Anfänger-Themen | 25 | 21.12.2007 15:48 |
| Exception abfangen->Klappt nicht ;( | che | Java Basics - Anfänger-Themen | 2 | 15.11.2004 22:06 |
| Exception abfangen | Oni | AWT, Swing & SWT | 19 | 07.10.2004 15:45 |
| Exception abfangen | EagleEye | Java Basics - Anfänger-Themen | 15 | 10.03.2004 23:23 |