Zacznę od informacji, która z pewnością może ucieszyć programistów C++. Otóż od Symbian OS 8.1 możliwe jest użycie mechanizmów przechwytywania wyjątkow znanych z języka C++, chociaż takie podejście do sprawy nie jest zalecane. Twórcy systemu namawiają do pozostania przy bardziej przetestowanym, bogatszym i zaimplementowanym w systemie od pierwszej wersji mechaniźmie walki z błędami.

Błędy Panics

Takim określeniem nazywane są błędy programistów. W sytuacji, gdy piszemy program z błędem, najlepszym wyjściem, które system może dla nas zrobić jest unicestwienie uruchomionej aplikacji najszybciej jak tylko błąd zostanie wykryty, z mniej lub bardziej dokładniejszymi informacjami o tym problemie. Podstawową używaną tutaj funkcją jest User::Panic(panicCategory, integer), gdzie panicCategory powinien być maksymalnie 16 znakowym określeniem błędu, integer natomiast 32-bitowym numerem błędu. Powszechnym sposobem używania Panics jest użycie makr __ASSERT_DEBUG oraz __ASSERT_ALWAYS; pierwszy jest kompilowany w wersji Debug, drugi w wersji Debug jak również i przy kompilowaniu wersji finalnej. Poniższy przykład obrazuje użycie opisanych makr:

void CMyClass::Foo(TInt aIndex)
{
        __ASSERT_ALWAYS(aIndex > 0, Panic(_L("Błąd typu Panic"), 11));
}

Prototyp funkcji wygląda jak pokazano poniżej: __ASSERT_ALWAYS(warunek, wyrażenie); kiedy to wyrażenie jest wykonane gdy warunek nie jest prawdą (odsyłam do 0×02. Symbian C++, Typy danych, gdzie zapisałem wzmiankę o porównywaniu typów prawda/fałsz). W tym przypadku Panic zostanie wywołane gdy aIndex będzie wartością mniejszą bądź równą zero, natomiast błąd zwrócony będzie treści „Błąd typu Panic” (_L() musi być używane do przekazywania własnych treści, w następnych częściach zostanie to wyjaśnione) o kodzie 11.