Zawsze sprawdzam argumenty funkcji publicznych i zgłaszam wyjątki, gdy coś jest nie tak. (Dla prywatnych pomocników używam asercji).Automatyczny komunikat wyjątku IllegalArgumentException?
Jak to:
if(a < 0 || a >= b)
throw new IllegalArgumentException("'a' must be greater or equal to 0 and
smaller than b ");
Ale to zawsze denerwuje mnie do napisania tych komunikatów o błędach. Komunikat wydaje się zbędny, ponieważ komunikat jest po prostu zaprzeczeniem oświadczenia:
Często zdarza się, że zmieniam nazwę zmiennej z refaktoryzacją (w środowisku Eclipse), a następnie komunikat nie odzwierciedla zmian. Albo zmieniam warunki i zapomnę zmienić wiadomości.
Byłoby wspaniale, gdybym mógł napisać coś takiego:
assertArgument(a >= 0 && a < b);
ten powinien podnieść IllegalArgumentException z komunikatem jak
"violated argument assertion: a >= 0 && a < b."
W C można napisać makro (faktycznie w C assert to tylko makro). Czy istnieje prosty sposób na zrobienie czegoś takiego w java?
Dziękujemy!
Można wygenerować kod Java podczas kompilacji ... ale ból nie jest tego wart. Twój problem nie jest śmiertelny - tak długo, jak możesz określić linię, wszystko będzie dobrze. Można również napisać skrypt w języku Python, aby przejść przez kod i sprawdzić niespójności. –
Co powiesz na tworzenie funkcji pomocnika 'checkParam (param, paramName)'? Następnie, nawet po zmianie nazwy zmiennych, możesz nadal wywoływać szybki skrypt w języku Python, aby wyszukać wszystkie wystąpienia checkParam i upewnić się, że są one koszerne. Być może ktoś inny może rozwinąć ten pomysł. –
Można nawet użyć odbicia w trybie debugowania. –