webForumDet fria alternativet

kontrollera längd med try/catch

Java

6 svar · 425 visningar · startad av Bjuris

Medlem sedan juli 2001514 inlägg
Frågan#1

Jag håller på med en valideringsklass som jag skulle vilja lösa på ett så smidigt sätt som möjligt.
Jag får in en sträng som sedan skall konverteras till exempelvis en Int, dett går att kolla med en try/catch på ett smidigt sätt, men hur skall jag kolla så att strängen inte är för lång?

Det viktiga är att jag kollar den mha try/catch då jag vill kasta upp ett exception högre upp i projektet för att avbryta.

i min klass så skickar jag in strängen & maxlängden.

jag kör Integer.parseInt(Strängen) innom try och får således ett exception om den inte fungerar.

jag kan ju inte använda en if sats då den ite kan gå "fel"
måste jag göra något fult och köra en while(int i = 0; i<maxlängden.length; i++) osv...

Medlem sedan juni 20008 205 inlägg
#2

Jag förstår inte riktigt ditt problem. Är det en OK strängvariant av en int returnerar parseInt godmodigt en int, är det inte en OK int kräks den iväg ett exception. Dett gäller även om talet i strängen är för stort för att rymmas i en int.

Medlem sedan juli 2001514 inlägg
#3

Det stämmer.
Jag skickar iväg ett NotSupportedConversionException högre upp i hiarkin.

Jag får in en String array, denna splittas upp enl direktiv, sen så skall det konverteras så att jag får rätt format och kontrolleras att ingen sträng är för lång.
Efter att min array har genomgått detta och allt är OK så lägger jag till infon till en VO för att sedan skickas vidare i systemet.

Medlem sedan juni 20031 837 inlägg
#4

du kan köra din for-loop och kasta ett eget Exception om det blir fel.
kommer inte ihåg exakt hur det ser ut men brukar vara något med

throw(new NotSupportedConversionException(...));
Medlem sedan juli 2001514 inlägg
#5

när man kör en throw i en try så avbryts väl inte try satsen?
Den kastar dock ett exception, men sedan så fortsätter den vidare i try{}

Medlem sedan juni 20031 837 inlägg
#6

Nej det tror jag inte. det skulle ju förstöra meningen med Exception.
Var dock ett tag sedan jag lekte med Exceptions.
Lättast är ju att göra ett litet exempel i stil med

try
{
for(int i=0; i < 10; ++i)
{
    if(i == 4)
    {
        throw(new Exception(...));
    }
    System.out.println("i: " + i);
}
}
catch(Exception ex)
{
    System.out.println("Ops");
}

Nu vet jag inte om detta är 100% rätt kod, har inte testar utan skrev det rakt upp och ner här. Testa gärna och se vad som händer.

Medlem sedan juli 2001514 inlägg
#7

Det var fel av mig, det loggas så in i hel*¤%"#¤%ete mycket, så jag blev lite lost i loggilen. Det stämmer att throw exception bryter.

tack så mycket

258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)