jaka jest różnica między java assert
i if() {} else exit;
?Różnica między "asert" java i "if() {} else exit; '
Czy mogę po prostu użyć if() {} else exit
zamiast assert
?
jaka jest różnica między java assert
i if() {} else exit;
?Różnica między "asert" java i "if() {} else exit; '
Czy mogę po prostu użyć if() {} else exit
zamiast assert
?
Może trochę google?
"Najważniejszą rzeczą, o której powinieneś pamiętać jest to, że instrukcja if-else powinna być używana do kontroli przepływu programu, a słowo kluczowe assert powinno być używane tylko do celów testowych. Nigdy nie powinieneś używać dowodów, aby faktycznie wykonać dowolną operację dla aplikacja działała prawidłowo Według oficjalnej dokumentacji Java firmy Sun:. „Każde twierdzenie zawiera logiczną wyrażenia, które Twoim zdaniem będzie prawdziwe, gdy twierdzenie wykonuje.” "
patrz kod poniżej: – jcy
'int * ptr = malloc (sizeof (int) * 10);' 'assert (ptr);' "..." ' – jcy
Umieść swój kod w tagu kodu, dzięki czemu mogę go zobaczyć lepiej. To zależy, czy chcesz wykonać test. Jeśli nie chcesz oddzielać testów od rzeczywistego kodu, użyj wyjścia if-else. Asercje są przeznaczone wyłącznie do testowania. ^^ – Depado
można, assert jest specjalnie zaprojektowany, aby twierdzić jakąś część kodu
assert rzuci AssertionError
jeśli nie dochodzić
Zobacz także
if-else służy do sterowania przepływem programu. nie wolno używać tego dowodu! Asserts są po prostu dla posiadania "punktów kontrolnych" w twoim kodzie, by sprawdzić warunki, które "powinny zawsze" pasować.
Potwierdzenia można włączać i wyłączać podczas uruchamiania programu, dzięki czemu można włączyć potwierdzenia w komputerze programisty/środowisku integracji i wyłączyć je w wydanej wersji.
Słowo kluczowe wymuszenia wywoła wyjątek tylko po włączeniu asercji z -ea
na wiersz poleceń. Polecenie if/else zawsze będzie wykonywane. Ponadto słowo kluczowe assert pozwala pisać mniej szczegółowy kod. Porównaj:
assert parameter != null;
do:
if(parameter != null)
{
}
else
{
}
Oczywiście assert pozwala pisać mniej obszerny kod, ale wciąż możesz napisać 'if (prm == null) throw new Exception (...);'. Twierdzenia nie są po prostu wykonane w tym celu, są one wykonane tak, że podczas wprowadzania programu do produkcji nie są wykonywane niepotrzebne testy (ponieważ twoje twierdzenia zawsze mają być ważne). W związku z tym są one usuwane z pakietu produkcyjnego. – belka
twierdzi, są ignorowane, chyba że param -EA przepuszcza:
java -EA myjar.jar
W ten sposób można z nich korzystać podczas testowania aplikacji, ale ignoruj je w innym czasie.
mogę po prostu zignorować twierdzenie
class A{
public static void main(String[] args) {
assert false;
System.out.println("hi");
}
}
Ten kod wypisze hi domyślnie
$ java -cp . A
hi
$ java -ea -cp . A
Exception in thread "main" java.lang.AssertionError
at A.main(A.java:6)
mogę tylko używać, jeśli() {} else exit zamiast dochodzić?
Tak, może, ale ...
nie będzie w stanie włączyć testu, chyba że dokonane stan zależą dodatkową flagi (co sprawia, że jest bardziej skomplikowana, etc),
nie dostanie szansę wykonania schludny-up w dowolnym załączając finally
bloku,
byłoby bardziej skomplikowane, aby zalogować przyczynę problemu niż jeśli został zgłoszony AssertionError
(lub jakikolwiek inny wyjątek) i jeśli Twój kod musiał zostać ponownie użyty (tak jak jest) w innej aplikacji, twoje połączenia z numerem exit
mogą być problematyczne.
Czy próbowałeś czytać dokumentację na temat "assert" i co robi? – dhblah