Re: пример из книги: цикл + try/catch
От: Clevelus Россия http://clevelus.ru
Дата: 13.07.08 14:14
Оценка:
Здравствуйте, varnie, Вы писали:

V>в книге "эффективное программирование на С++" авторов Э. Кёниг и Б. Му есть такой семпл:

V>
V>//...
V>for (vector<Core>::size_type i = 0; i != students.size(); ++i){
V>  cout << students[i].name() << string(maxlen + 1 - students[i].name.size());
V>  try{
V>    double final_grade = students[i].grade;
V>    streamsize prec = cout.presision();
V>    cout << setprecision(3) << final_grade << setprecision(prec) << endl;
V>  } catch(doman_error e){
V>    cout << e.what() << endl;
V>  }
V>}
V>

V>хочу узнать, почему бы не сделать вот так:
V>
V>//...
V>try{
V>  for (vector<Core>::size_type i = 0; i != students.size(); ++i){
V>    cout << students[i].name() << string(maxlen + 1 - students[i].name.size());
V>      double final_grade = students[i].grade;
V>      streamsize prec = cout.presision();
V>      cout << setprecision(3) << final_grade << setprecision(prec) << endl;
V>  }
V>} catch(doman_error &e){
V>    cout << e.what() << endl;
V>}
V>

V>?
V>признателен пояснениям.

Можно сделать по разному ... и будет работать.
А разница в том, что в первом примере при возникновении исключения цикл не прервется, а во втором, при возникновении исключения цикл прерывается и дальнейшего перебора нет.

Вывод: первый пример (из книги) более правильный. (Кстати второй пример более быстрый с точки зрения кода)
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.