Jeśli format danych XML będzie niepoprawny i w tym miejscu parser rzuci wyjątek to dostaniemy co prawda obiekt Settings ale może on nie posiadać wszystkich danych (tak działa SettingsParser#parseSettings). Jeśli jednak później będziemy chcieli pobrać np. wartość int dla nieistniejącego klucza to w Settings#getValueAsInt dostaniemy NPE. To nie jest dobre. Proponowałbym nie obsługiwać wyjątków wcale ani w SettingsHelper.parse ani w SettingsParser#parseSettings, niech lecą w górę. Samo to, że oprócz zalogowania nie mamy pomysłu co z nimi zrobić w tym miejscu, świadczy o tym, że nie tutaj powinniśmy się nimi przejmować. Ich obsługę przesunąłbym do AsyncTaska, który wczytuje dane i tam jako najrozsądniejsze wyjście z sytuacji zastosować zamknięcie aplikacji (głównej aktywności) ewentualnie z jakimś oknem dialogowym z błędem.

@maciej-malecki Maciek, co o tym sądzisz?