Java. Sygnalizowanie błędów

0

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!!

0

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.

0

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??

0

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

0

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 ?

0

Odpowiedź na pytanie z tematu:
Przykłady:

  1. 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).
  2. Strategia z Haskella, czyli monady :]
  3. Jak wyżej, czyli ekstra parametr metody.
    itd
0

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;
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1