Opened 4 years ago

Closed 4 years ago

#800 closed ожидается проверка (задача сдана)

WW #14

Reported by: onofriychuk.ilya Owned by: Sokolov Viacheslav
Component: WW_exceptions Version: 3.0
Keywords: Cc:

Description


Change History (7)

comment:1 Changed 4 years ago by Sokolov Viacheslav

mkdir -p obj
g++ -O2 -Wall -Werror -std=c++11 -Iinclude -c -MMD -o obj/matrix.o src/matrix.cpp
src/matrix.cpp: In constructor ‘math_matrix::Matrix::Matrix(size_t, size_t)’:
src/matrix.cpp:10:13: error: catching polymorphic type ‘class std::bad_alloc’ by value [-Werror=catch-value=]

10 | catch (std::bad_alloc){

|

src/matrix.cpp: In member function ‘math_matrix::Matrix& math_matrix::Matrix::operator*=(const math_matrix::Matrix&)’:
src/matrix.cpp:48:19: error: catching polymorphic type ‘class std::bad_alloc’ by value [-Werror=catch-value=]

48 | } catch (std::bad_alloc) {

|

src/matrix.cpp: In member function ‘int32_t& math_matrix::Matrix::getElem(size_t, size_t)’:
src/matrix.cpp:57:19: error: catching polymorphic type ‘class std::out_of_range’ by value [-Werror=catch-value=]

57 | } catch (std::out_of_range) {

| ~

src/matrix.cpp: In member function ‘int32_t math_matrix::Matrix::getElem(size_t, size_t) const’:
src/matrix.cpp:65:19: error: catching polymorphic type ‘class std::out_of_range’ by value [-Werror=catch-value=]

65 | } catch (std::out_of_range) {

| ~

src/matrix.cpp: In member function ‘void math_matrix::Matrix::load(const char*)’:
src/matrix.cpp:97:19: error: catching polymorphic type ‘class std::bad_alloc’ by value [-Werror=catch-value=]

97 | } catch (std::bad_alloc) {

|

cc1plus: all warnings being treated as errors
Makefile:17: recipe for target 'obj/matrix.o' failed
make: * [obj/matrix.o] Error 1

Last edited 4 years ago by Sokolov Viacheslav (previous) (diff)

comment:2 Changed 4 years ago by Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

comment:3 Changed 4 years ago by onofriychuk.ilya

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:4 Changed 4 years ago by Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

10 Matrix(size_t rows = 0, size_t cols = 0);
лучше explicit, чтобы случайно Matrix(NULL) не конструировать

27 explicit MatrixException?(const char* msg = "");
зачем = ""?

кажется, проще выставить .exceptions на failbit, badbit для потоков ввода/вывода и один раз в main-е обработать

11 throw MatrixException?("Unable to allocate memory.");

лучше bad_alloc обработать отдельно в main. Например, в этом месте требуется аллокация памяти при конструировании исключения, что может привести к std::terminate (памяти-то нет)

54 int32_t& Matrix::getElem(size_t row, size_t col) {
название не соответствует сигнатуре, лучше явно выразить, что возвращается ссылка - добавить Ref к названию либо поменять имя на at (что ближе к стандартной библиотеке)

comment:5 Changed 4 years ago by onofriychuk.ilya

Version: 2.03.0

comment:6 Changed 4 years ago by onofriychuk.ilya

Type: ожидаются исправленияожидается проверка

comment:7 Changed 4 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed

В условии просили немного другой набор пробельных символов.

Note: See TracTickets for help on using tickets.