Nowości w Bonsole(3): Zmiany w interfejsie i obsługa błędów

Zacznę od pewnej zbieżności. Ktoś wydał projekt o podobnej nazwie: https://www.npmjs.com/package/bonsole . Nie skomentuję tego - być może zmienię nazwę swojego projektu lub poproszę autora bonsole (z małej) o to.

Nowości

Wprowadziłem zmiany w GUI, jak i systemie obsługi błędów. Poza tym, to od niedawana jest dostępny plik nagłówkowy z prototypami funkcji.

Zmiany w GUI

Zmian w GUI jest nie wiele. Dodałem dwa nowe przyciski : File i Directory. Oba służą do wyboru jakiegoś pliku (katalog to też plik), tylko ten pierwszy służy do wyboru nie katalogów, a drugi do wyboru katalogów. Ścieżka do wybranego pliku zostaje skopiowana do ostatnio zaznaczonego pola edycyjnego. Możemy więc wybrać file, przejść do examples i wybrać ls, kliknąć w add param. Teraz wybieramy nowe pole wprowadzania, klikamy w directory, przechodzimy do / i wybieramy home. Po kliknięciu w run commands, zostanie wylistowana lista katalogów.

Ponadto przeorganizowałem sposób wyświetlania pozostałych przycisków (zamiast jeden pod drugim, od tej pory jeden jest obok drugiego).

Dodałem też zapytanie o zamknięcie w przypadku naciśnięcia X na belce tytułowej i ubijanie procesów-dzieci, jeżeli potwierdzimy zamknięcie aplikacji.

Obsługa błędów

Od tej pory Bonsole, o ile będzie to możliwe, będzie generować ładne „strony” błędów, zamiast wypisywać tekst na terminalu. Aplikacja może ustawić flagi. Jedną z nich jest wyłączenie wyświetlania stron błędów, jeżeli np. programista będzie chcieć samemu obsłużyć błąd. Następną jest wymuszenie wyświetlania informacji, jak nazwa pliku, numeru linii, a także nazwa funkcji, gdzie zdarzył się błąd. Co do ostatniego, to istnieje także flaga wymuszająca wyświetlanie tych informacji dla błędów aplikacji. Tak. Mamy dwa rodzaje błędów: wewnętrzny i aplikacji.

W przypadku napotkania błędu wewnętrznego, Bonsole zapisuje o nim informacje, i jeżeli aplikacja nie zabroniła wyświetlić błędu wewnętrznego, to zostanie on wyświetlony. Lecz program ma dostęp do informacji o ostatnim błędzie wewnętrznym i dostęp do funkcji go obsługującego. Może także manipulować informacjami o błędzie.

Jeżeli chodzi o obsługę błędów aplikacji, to jest tylko jedna funkcja i makro wywołujące tę funkcję. Makro wywołuje funkcję, podając mu nazwę pliku, numer linii, a także nazwę funkcji z miejsca wywołania. Jak wspomniałem, aplikacja może zażądać wyświetlenia tych informacji. Do obsługi błędu aplikacji trzeba podać errno - zmienną, funkcję, bądź makro (standard tego nie precyzuje), która powiadomi o rodzaju błędu.

To na tyle.

Aha dodałem nowy przykład. Nazywa się error-handling i demonstruje funkcje obsługi błędów.