Добавить к какой сказанный Evan: C не имеет встроенного оператора для возведения в степень, потому что это не примитивная операция для большинства центральных процессоров. Таким образом это реализовано как библиотечная функция.
кроме того, для вычисления функционального e^x, можно использовать exp(double)
, expf(float)
, и expl(long double)
функции.
Примечание, которое Вы делаете не , хочет использовать ^
оператор, который является битовое исключающее "ИЛИ" оператор.
Я использовал log4j и log4cxx и веду журнал в syslogd. Kiwi - это простой системный журнал Win32, который отслеживает сообщения журнала и сохраняет их в файл. Log4j / Log4cxx имеют файлы конфигурации, которые вы можете использовать для настройки всех уровней вашего журнала или адресатов сообщений журнала (вы можете войти в несколько мест).
Это требует так мало усилий для настройки и использования, и это работает как шарм.
Я сам не пробовал log4php .
Исключения хороши, когда вы больше не хотите, чтобы ваша программа продолжала выполняться. Перехватывает исключения на высоком уровне, где можно принять последствия неудачных выполнений.
Более простым решением было бы использование исключений .
Когда возникает ошибка, которую вы показываете пользователю, генерируйте исключение особого типа - возможно с названием UserError
. Исключение должно содержать текст сообщения об ошибке, когда вы его бросаете. Такого рода ошибки представляют собой функции , которые предоставляют пользователям полезную информацию (т. Е. Они пытались удалить то, что не существует - что может произойти, когда у них открыто несколько браузеров и т. Д.)
например:
throw new UserError("That object no longer exists.");
] Когда возникает ошибка, которую вы хотите скрыть от пользователя, вызовите исключение другого типа, например, с именем InternalError
. Вы должны записать это и позволить программе продолжить работу, чтобы конкретная ошибка была скрыта от пользователя. Если это препятствует тому, чтобы что-то произошло, вы можете создать общее сообщение об ошибке. Это будут ошибки , и вы хотите исправить их как можно скорее.
например:
throw new InternalError("Failed to connect to remote service");
Все сообщения об ошибках могут быть сохранены (жестко закодированы) в источнике, в котором возникает исключение. . Это не обязательно плохой дизайн - если вы используете такой инструмент, как gettext , вы можете легко перевести все эти сообщения.
Просмотрите руководство NerdDinner о том, как создавать процедуры проверки перед принятием окончательного решения:
http://nerddinnerbook.s3.amazonaws.com/Part3.htm
Часть проверки занимает примерно 2/3 страницы вниз.