niedziela, 27 stycznia 2013

Rzucanie wyjątków a wydajność

W internecie jest wiele artykułów na temat zasadności rzucania czy też nie rzucania wyjątków.
Wiele artykułów mówi o tym aby nie rzucać wyjątków, gdyż powoduje to drastyczne obniżenie wydajności aplikacji. Argumentacja tego stanowiska odnosi się do potrzeby zwinięcia stosu wywołań oraz wypełnienia klasy wyjątku.
Czy aby na pewno jest tak, że rzucenie wyjątku spowoduje aż tak ogromne spowolnienie aplikacji, że warto zwrócić kod wyjątku czy też wartość pustą z wywołania np. metody?
W większości przypadków rzucenie wyjątku nie spowoduje znacznego spadku wydajności aplikacji. Jeżeli rzucenie wyjątków w kodzie który tworzymy powoduje duży spadek używalności aplikacji, znaczy to, iż stosujemy wyjątki w nieodpowiedni sposób.

Jednym z możliwych rozwiązań, jest sprawdzanie parametrów wejściowych dla danej funkcji przed przekazaniem ich do niej. Innym rozwiązaniem jest zaimplementowanie metody typu TryX - przykładem może być TryParse. Szczegółowy opis tych wzorców można odnaleźć na stronie http://msdn.microsoft.com/en-us/library/ms229009.aspx

Stosowanie wyjątków jest głównym sposobem raportowania nieprzewidzianych i błędnych sytuacji w kodzie. Należy się tego trzymać i unikać stosowania "zamienników" wyjątków znanych np. z języka C.

Brak komentarzy:

Prześlij komentarz