W procedurze może wystąpić błąd skutkujący niewykonaniem jej celu, a także uszkodzeniem obiektu lub kolekcji OUX/C+, na której ta procedura operuje. W przypadku wystąpienia takiego błędu wymagany jest niezwłoczny powrót z procedury z kodem błędu, tak by nie próbować wywoływać w tej procedurze kolejnych procedur. Jedynie wtedy, gdy nie udała się procedura i wróciła z błędem ‛bez skutków ubocznych’, należy próbować wyrzucić zasoby dotychczas przydzielone w tej procedurze, ale tylko do pierwszego błędu takiej ścieżki.
Zostały ustalone następujące kody błędów:
- “~0” dla błędu niewykonania celu procedury, ale bez skutków ubocznych.
- “~1” dla błędu uszkodzenia obiektu poza niewykonaniem celu procedury. Na przykład przy zgubieniu przydzielonej pamięci operacyjnej.
- “~2” dla błędu uszkodzenia kolekcji obiektów. Jak również uszkodzenia danych obiektu znajdującego się w kolekcji.
- “~3” dla błędu uszkodzenia danych w pamięci nieulotnej. Na przykład uszkodzenia danych w pliku.
Odpowiednio w przypadku wystąpienia tych błędów należy je obsłużyć następująco:
- Należy opuścić blok wywołania procedury ścieżką obsługi błędu. Można na żądanie użytkownika ponowić próbę wykonania funkcji.
- Należy wyjść ścieżką obsługi błędu do bloku tworzenia obiektu. Jeśli nadal jest możliwa interakcja z użytkownikiem, to na żądanie można ponowić próbę wykonania funkcji.
- Należy alternatywną ścieżką obsługi błędu próbować wyjść do bloku tworzenia kolekcji, gubiąc pamięć operacyjną przydzieloną dla obiektu znajdującego się w kolekcji lub dla całej kolekcji.
- Należy ścieżką obsługi błędu wyjść z programu i wykonać procedurę odtworzenia danych w pamięci nieulotnej.