Avatar billede al_dair Nybegynder
02. december 2004 - 20:41 Der er 15 kommentarer og
1 løsning

try-catch i en løkke med flere Exceptions..

Hey..

try{
for(..){

  flere throws Exceptions
  }
catch(..){..}

}

Jeg vil så gerne catche alle exceptions i løkken, efter hinanden.
men som bekendt stopper den efter den første Exception..
Tror at nestede try-catch's er løsning, men hvordan?

Any idea?
Takker
Avatar billede mikkelbm Nybegynder
02. december 2004 - 20:44 #1
Kan du ikke bare specificere hvilke Exceptions du vil fange?

try
{
  //....
}
catch (SQLException e)
{}
catch (NumberFormatException e)
{}
catch (Exception e)
{}
Avatar billede arne_v Ekspert
02. december 2004 - 20:44 #2
Skal du ikke bare flytte try catch ind i for løkken ?
Avatar billede mikkelbm Nybegynder
02. december 2004 - 20:44 #3
Eller har jeg misforstået spørgsmålet?
Avatar billede jakoba Nybegynder
02. december 2004 - 20:51 #4
du kan have mange catch efter en enkelt try.
den catch der aktiveres er så den med en exceptiontype der svarer til den der kastes:

try {
    int tal = Integer.parseInt( streng );  // kan kaste numberformatexception
    int tal2 = etArray[tal];                  // kan kaste IndexOutOfBoundsException
}
catch( NumberFormatException e ) {
    System.out.println( "'streng' indeholdet ikke et lovligt tal." );
}
catch( IndexOutOfBoundsException e ) {
    System.out.println( "'streng' indeholdet ikke en lovlig indexvædi til etArray." );
}

mvh JakobA
Avatar billede arne_v Ekspert
02. december 2004 - 20:53 #5
Jeg læste spørgsmålet som at man skulle kunne catche en exception i
hvert gennemløb ...
Avatar billede mikkelbm Nybegynder
02. december 2004 - 20:56 #6
>> Arne

Det er ikke utænkeligt, at det er det der tænkes på.
Avatar billede al_dair Nybegynder
02. december 2004 - 21:23 #7
Arne, du har fat i det rigtige..

Alstså .. det er en kontruktor, der kaster en Exception, ved oprettelse..
Så vil jeg bare catche dem i hvert gennemløb..
Avatar billede al_dair Nybegynder
02. december 2004 - 21:24 #8
Og det er den samme  Exception.. så der ikke behov for flere catchs..
Avatar billede al_dair Nybegynder
02. december 2004 - 21:30 #9
lidt af koden her..
Bemærk at der kastes en Exception ved hver oprettelse..


try {
    Bold[] bolde={
new Bold(-1,-1,-1),
new Bold(-1,-1,1),
new Bold(-1,1,1),
new Bold(-1,9,13),
new Bold(-1,0,1),
      ..                           
      ..                           
      ..                           
new Bold(5,6,11),                                           
new Bold(11,5,10)
};

  for(int i=0; i<=bolde.length; i++){
          System.out.println(bolde[i]);
        }
  }
   
catch (Exception e) {       
        System.out.println(e.getMessage());

}
Avatar billede arne_v Ekspert
02. december 2004 - 21:36 #10
Måske:

int[] a1 = { -1, -1, -1, ... };
int[] a2 = { -1, -1, 1, ... };
int[] a3 = { -1, 1, 1, ... };
Bold[] bolde = new Bold[a1.length];
for(int i = 0; i < bolde.length; i++) {
  try {
      bolde[i] = new Bold(a1[i], a2[i], s3[i]);
  } catch(Exception e) {
      // noget
  }
}
Avatar billede al_dair Nybegynder
02. december 2004 - 22:00 #11
Arne, ekseptionelt !

Tak
Avatar billede arne_v Ekspert
02. december 2004 - 22:06 #12
så vil jeg ligge et svar
Avatar billede al_dair Nybegynder
02. december 2004 - 22:52 #13
Hvis jeg siger at objekterne oprettes med rækkeværdier f.eks (a1[0],a2[0],a3[0]),
og ikke søjleværdierne.. tager jeg fejl dér?

det kræver nemlig at jeg omstruktere alle rækker og søjler..
Avatar billede arne_v Ekspert
02. december 2004 - 22:55 #14
Første bold oprettes med a1[0],a2[0],a3[0]

Anden bold oprettes med a1[1],a2[1],a3[1]

o.s.v.

hvis du har data i en anden form, så kan du muligvis lave noget smart
med enten argumenter eller index
Avatar billede arne_v Ekspert
02. december 2004 - 22:56 #15
Hvis f.eks. data ligger i et enkelt array, så kan du:

int[] a = { -1, -1, -1, -1, -1, 1, -1, 1, 1... };
Bold[] bolde = new Bold[a.length/3];
for(int i = 0; i < bolde.length; i++) {
  try {
      bolde[i] = new Bold(a[3*i], a[3*i+1], s[3*i+2]);
  } catch(Exception e) {
      // noget
  }
}
Avatar billede al_dair Nybegynder
03. december 2004 - 23:34 #16
takker endnu en gang :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester