Kas on võimalik tagada tingimuse rangelt täitmine stringi jaoks ilma erandit kutsumata juhul, kui see ei täida?
sobes.tech AI
Vastus AI-lt
Java-s kontrollitakse toimub tavaliselt assert-lausete või erandite viskamisega, kui tingimused on rikkuvad. Kui soovite rangelt kontrollida stringi tingimust ilma erandit viskamata, saate kasutada meetodeid, mis tagastavad boolean väärtuse, näiteks String.matches(), String.isEmpty(), või kirjutada oma kontrollifunktsiooni.
Näide:
String s = "näide";
boolean onKehtiv = s != null && s.matches("[a-z]+\");
if (onKehtiv) {
// tingimus on täidetud
} else {
// tingimus ei ole täidetud, kuid erandit ei visata
}
Kui vajate ranget kontrolli, mis peatab täitmise rikkomise korral, kuid ilma erandita, saate kasutada assert (aktiivse kontrolliga):
assert s != null && s.length() > 0 : "String ei tohi olla tühi";
Kuid assert ei viska klassikalises mõttes erandit, vaid genereerib AssertionError, mida saab jooksutamise ajal välja lülitada.
Kokkuvõtteks: range tingimuse kontroll ilma erandita on kas kontroll booleaalse tulemusega või assert kasutamine, olles teadlik selle omadustest. Täielik erandite vältimine range kontrolli ajal ei ole võimalik, kui soovitakse peatada täitmine rikkomise korral.