Возможный дубликат:
Каков самый простой способ вызвать сбой программы на C ++?
В нашей кодовой базе я часто вижу конструкцию, когда программа каким-то образом переходит в недопустимое состояние, код делает что-то намеренно неправильное, просто чтобы вызвать сбой. Обычно это выглядит примерно так:
if(<something is wrong>)
{
int *ptr = NULL;
*ptr = 0;
}
Это, конечно, вызывает исключение нулевой ссылки и приводит к сбою программы без возможности восстановления. Мне просто интересно, действительно ли это лучший способ сделать это? Во-первых, он плохо читается. Без комментария вы можете не понять, что сбой, который здесь происходит, является преднамеренным. Во-вторых, от этого практически невозможно избавиться. Он не генерирует исключения, поэтому не может быть обработан другим кодом. Он просто убивает программу без возможности возврата. Это также не дает большого представления о том, почему здесь произошел сбой. И он вылетает во всех сборках, в отличие, скажем, от assert. (У нас есть довольно надежная система утверждений, но она не всегда используется в подобных случаях.)
Это стиль, который мы используем повсюду, и я не могу никого убеждать в обратном. Мне просто любопытно, насколько это распространено в отрасли.
abort()
? - person Fred Larson   schedule 22.11.2012abort()
, могут быть кроссплатформенными не во всех системах. Мы большая известная компания, и я здесь новенький, поэтому я склонен верить им на слово, что все обстоит так, как есть, не зря. Но я еще не слышал хорошего объяснения этому. - person Darrel Hoffman   schedule 22.11.2012