*error*

Wyszukaj w słowniku

Dostępne słowniki:

Termin Definicja
*error*

Błędy mogą wystąpić w wielu sytuacjach

  • Keidy Użytkownik ma coś wpisać, wybrać, zaznaczyć, tylko wciśnie enter/spację
  • Próba dzielenia przez 0
  • Keidy Użytkownik użje klawisza [ESC]
  • Błędnie napisana intrucja w programie, np użycie zbyt małej, zbyt dużej ilości parametrów wywołania funkcji. niepoprawny typ zmiennej przekazywanej do funkcji

Wszystkie takie sytuacje powinny być obsłużone przez przechwytywanie wyjątków czy właśnie obsługę błędów.

Z pomocą przychodzi nam funkcja *error*

 

Funkcja *error* może być zdefiniowana przez programistę. Funkcja może być zdefiniowana oddzielnie jako funkcja lokalna w każdej funkcji.
Jeśli ZWCAD wykonujac kod napotka dowolny błąd, przejdzie do najbliżej zdefiniowanej funkcji *error* czyli w obecnej funkcji, lub w funkcji nadrzędnej jeśli wywoływana funkcja jest funkcją zadeklarowaną lokalne wewnątrz innej funkcji.

Funkcja *error* powinna mieć jeden parametr - który będzie tekstem określającym komunikat błędu.

Funkcja *error* standardowo zaimplmentowana w ZWCAD wyświetla komunikat błędu w pasku poleceń

(itoa nil)
error: incorrect type - nil

Jednym z najpopularniejszy zastosowań funkcji *error* może być przywracanie domyślnych wartości zmiennych systemowych zmienionych w czasie działania aplikacji niezależnie od tego, czy cała procedura została wykonana poprawnie, czy też na którymś etapie wystąpił błąd.

Przykład:

(defun c:test ( / *error* osm )

(defun *error* ( msg )
(if osm (setvar 'osmode osm))
(princ)
)

(setq osm (getvar 'osmode))
(setvar 'osmode 0)

(rtos (getreal "\nPress Esc to exit, press Enter to force an error ..."))

(*error* "")
(princ)
)



Jeśli chcesz dowiedzieć się więcej o błędach i ich przechwytywaniu, poczytaj o funkcjach:

(vl-catch-all-apply 'function list)

(vl-catch-all-error-message error-obj)

(vl-catch-all-error-p arg)

comments powered by Disqus