Tylko nie minusujcie a odpowiedzcie. Prosze o pomoc.Zaproponuj strategię sygnalizowania błędów w programie w sytuacji braku możliwości posłużenia się wyjątkami. JAVA PROSZĘ O POMOC!!
Rozumiem, że błąd wykrywasz sam (np. gdy argumenty funkcji nie spełniają jakichś warunków wstępnych), wtedy możesz np. stworzyć dodatkowy parametr metody z jakimś error handlerem i przerywać natychmiast jej działanie zwracają nulla lub jakąś domyślną wartość. Bardziej prymitywna metoda to wypisanie komunikatu na System.err/out choć w gruncie rzeczy to jest to samo, tylko że tym error handlerem jest domyślne wyjście aplikacji.
Dzięki:) A czy w języku programowania, w którym nie ma niejawnej konwersji typów możliwy jest polimorfizm ad-hoc ? Jeśli tak to dlaczego??
Szczerze to nie rozumiem tego pytania, a wydaje mi się, że się dość dobrze znam na programowaniu obiektowym :).
Niejawna konwersja typów = potrzeba rzutowania? Czyli nawet jak obiekt klasy B implementującej interfejs A przypisujemy do zmiennej zadeklarowanej jako typ A, to musimy rzutować na A?
Odpowiedź na to pytanie to tak, bo skoro się da zrobić w języku, w którym jest niejawna konwersja, to czemu nie dałoby się w języku bez niej?
Bo James Gosling pozwolił.
// Edit - czemu usunąłeś pytanie? :D
Sorki, przez przypadek. Więc mógłbyś to jakoś ubrać w słowa dlaczego? Czy metoda może być generyczna, gdy jest umieszczona w klasie niegenerycznej ?
Odpowiedź na pytanie z tematu:
Przykłady:
- Strategia z C, czyli kody zwracane przez funkcje + statyczny globalny mutowalny stan przechowujący szczegółowe dane nt błędów (w bibliotece standardowej C w ogóle jest sporo globalnego mutowalnego stanu).
- Strategia z Haskella, czyli monady :]
- Jak wyżej, czyli ekstra parametr metody.
itd
Podejście pomiędzy monadami (stan obliczeń), a stanem globalnym, czyli zwracamy "wyniki operacji":
class WynikOperacji<T>{
private final T produkt;
private final String blad;
private WynikOperacji(T produkt, String blad){
this.produkt = produkt;
this.blad = blad;
}
public static WynikOperacji<?> ok(Object produkt){
return new WynikOperacji(produkt, null);
}
public static WynikOperacji<?> blad(String blad){
return new WynikOperacji(null, blad);
}
public T getProdukt() {
return produkt;
}
public String getBlad() {
return blad;
}
}
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.