2014-01-29 2 views
0

Я хочу улучшить некоторые аспекты безопасности моего кода. Если при выполнении alg.solve() есть ошибка, то процесс не должен останавливаться, а null должен быть возвращен runMethod(). Будет ли следующий фрагмент кода работать таким образом?Улучшите обработку ошибок кода

public Result runMethod() 
    { 
     Algorithm alg = new Algorithm(this); 
     Result r = null; 
     try 
     { 
     r = alg.solve(); 
     } 
     catch (Exception e) 
     { 
     e.printStackTrace(); 
     } 
     return r; 
    } 
+0

(Если вы собираетесь вернуться 'null', я написал бы тело немного более четко и лаконично' Алгоритм ALG = новый алгоритм (это);. Попробуйте {обратный alg.solve();} catch (SomeException exc) {return null;} ') –

ответ

2

Да.

Некоторые комментарии:

  1. Не используйте e.printStackTrace();. Прежде всего, он проглатывает полезную информацию из цепочки исключений. Затем вы не можете контролировать, следует ли печатать или нет. Наконец, вы никогда не можете быть уверены, что есть stderr для печати.

    Используйте вместо этого систему ведения журнала.

  2. Вместо того, чтобы возвращать null, рассмотрите определение исключения из вашего собственного. Это позволит вам включать полезную информацию, которую пользователь (кто не понимает этого) может затем отчитываться перед вами, поэтому у вас есть шанс выяснить, почему произошла ошибка.

Смежные вопросы