LINUX.ORG.RU

Clang не работет try, catch

 ,


0

1

Почему-то игнорирует try/catch и выдает segmentation fault:

try {

	offsetsX[n] = manager->theme->element[element].params[params][0].num / manager->theme->skin->width;
	offsetsY[n] = manager->theme->element[element].params[params][1].num / manager->theme->skin->height;
	fWidths [n] = manager->theme->element[element].params[params][2].num / manager->theme->skin->width;
	fHeights[n] = manager->theme->element[element].params[params][3].num / manager->theme->skin->height;

	iWidths [n] = floor (manager->theme->element[element].params[params][2].num);
	iHeights[n] = floor (manager->theme->element[element].params[params][3].num);

} catch (...) {

	throw std::runtime_error (Formatter() << "Can't find element" << element << "[" << params << "]");

}

★★★

Последнее исправление: Int64 (всего исправлений: 1)

Только в clang что-ли?
Почему не at юзаешь?[N] - не должен выбрасывать исключение.
Падать может вообще не при доступе, а где-то в другом месте.

FIL ★★★★
()
Последнее исправление: FIL (всего исправлений: 3)

А с чего try/catch должен такое ловить? Тебе же сигнал приходит, а не исключение.

anonymous
()
Ответ на: комментарий от Int64

Ну не будет, как выше сказали. Можешь закрывать :-)

FIL ★★★★
()

Попробуй Java.

Stil ★★★★★
()

не работет try, catch

попробуй нормальные ЯП

Oxdeadbeef ★★★
()

Я бы писал в другом стиле, анализируя наличие тех или иных элементов программным путем. Есть любители экзепшенов, а я конечно люблю просто проверять параметры, и ничего не падает софт.

И да, мне кажется этот код именно что будет валиться в сегфолт, а не исключение кидать...

I-Love-Microsoft ★★★★★
()

Чтобы сигнал бросал исключение, нужна специальная опция компилятора. В gcc это -fnon-call-exceptions (кажется), про LLVM не знаю.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.