webForumDet fria alternativet

kontrollera längd med try/catch

6 svar · 423 visningar · startad av Bjuris

BjurisMedlem sedan juli 2001542 inlägg
#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...

spangoMedlem sedan juni 20006 147 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.

BjurisMedlem sedan juli 2001542 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.

The_HulkMedlem sedan juni 20031 937 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(...));
BjurisMedlem sedan juli 2001542 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{}

The_HulkMedlem sedan juni 20031 937 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.

BjurisMedlem sedan juli 2001542 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

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb