Błąd #4439

RelReader i RelWriter nie obsługują wyjątków

Added by Adam Radziszewski almost 7 years ago.

Status:NowyStart date:23 Nov 2012
Priority:NormalnyDue date:
Assignee:Łukasz B% Done:

0%

Category:-
Target version:-

Description

RelWriter po cichu nie robi nic, gdy pliku do zapisu nie da się otworzyć. Powinien zgłaszać wyjątek, jeśli otwarty ofs nie jest .good(). Najlepiej taki sam wyjątek jak w relreaderze (ten sam co do klasy przynajmniej, komunikat można ew. zmienić, że nie można pisać do pliku).

Drugi problem: w swigu wyjątek relreadera nie jest należycie opakowany, więc kod pytonowy się wywali i przerwie działanie bez możliwości przechwycenia takiego wyjątku. To samo dotyczyć będzie relwritera po dodaniu throwa.

Działające rozwiązanie tego problemu jest np. w tokenreader.i -- funkcje zwracające wyjątki (czyli read i write) trzeba opakować w %exception, zobacz ten tokenreader.i (w tokenwriter.i jest tak samo). Nie jest to może zbyt ładne na poziomie plików .i, ale nie udało nam się znaleźć ładniejszego rozwiązania. To jest istotne, bo bez tego opakowania lecą gołe wyjątki z C++-a, które nie są rozpoznawane jako wyjątki i nie da się ich przechwycić.

Przy okazji możesz poprawić komentarze w relwriterze, bo są wzięte żywcem z readera i wprowadzają w błąd.

Also available in: Atom PDF