Результаты поиска
Использование свойства объекта по умолчанию для свойства метода
Я пытаюсь сделать это (что приводит к неожиданной ошибке T_VARIABLE):
public function createShipment($startZip, $endZip, $weight = $this->getDefaultWeight()){}
Я не хочу помещать магическое число туда для веса, так как объект, который я использую, имеет параметр "defaultWeight" , который получают все новые поставки, если вы не укажете вес. Я не могу поместить defaultWeight в саму отгрузку, потому что она изменяется от группы отгрузки к группе отгрузки. Есть ли лучший способ сделать это, чем следующий?
public function createShipment($startZip, $endZip, weight = 0){
if($weight <= 0){
$weight = $this->getDefaultWeight();
}
}
Уменьшение количества повторяющихся кодов обработки ошибок в C#?
Я никогда не был полностью доволен тем, как работает обработка исключений, есть много исключений и try / catch приносит в таблицу (размотка стека и т. д.), но, похоже, в этом процессе нарушается большая часть модели OO.
В любом случае, вот в чем проблема:
Допустим, у вас есть какой-то класс, который обертывает или включает сетевые операции с файлом IO (например, чтение и запись в какой-то файл по какому-то конкретному пути UNC). По разным причинам вы не хотите, чтобы эти операции IO завершились неудачей, поэтому, если вы обнаружите, что они завершились неудачей, вы повторяете их и продолжаете повторять, пока они не завершатся успешно или вы не достигнете тайм-аута. У меня уже есть удобный класс RetryTimer, который я могу создать и использовать, чтобы перевести текущий поток в спящий режим между повторными попытками и определить, когда истек период ожидания и т. д.
Проблема в том, что у вас есть куча операций IO в нескольких методах этого класса, и вам нужно обернуть каждую из них в логику try-catch / retry.
Вот пример фрагмента кода:
RetryTimer fileIORetryTimer = new RetryTimer(TimeSpan.FromHours(10));
bool success = false;
while (!success)
{
try
{
// do some file IO which may succeed or fail
success = true;
}
catch (IOException e)
{
if (fileIORetryTimer.HasExceededRetryTimeout)
{
throw e;
}
fileIORetryTimer.SleepUntilNextRetry();
}
}
Итак, как избежать дублирования большей части этого кода для каждой операции file IO в классе? Мое решение состояло в использовании анонимных блоков делегатов и единственного метода в классе, который выполнял переданный ему блок делегатов. Это позволило мне делать подобные вещи другими методами:
this.RetryFileIO( delegate()
{
// some code block
} );
Мне это несколько нравится, но оставляет желать лучшего. Я бы хотел услышать, как другие люди решают подобные проблемы.
Глобальная обработка исключений для элемента управления winforms
При работе над ASP.NET 1.1 проектами я всегда использовал Global.asax, чтобы поймать все ошибки. Я ищу аналогичный способ поймать все исключения в пользовательском элементе управления Windows Forms, который в конечном итоге является размещенным элементом управления IE. Каков правильный способ сделать что-то подобное?
Как вы регистрируете ошибки (исключения) в ваших приложениях ASP.NET?
Я ищу лучший способ регистрации ошибок в приложении ASP.NET. Я хочу иметь возможность получать электронные письма, когда в моем приложении возникают ошибки, с подробной информацией об исключении и текущем запросе.
В моей компании мы привыкли иметь свой собственный ErrorMailer, ловя все в Global.asax Application_Error. Он был "Ok", но не очень гибким и настраиваемым.
Мы недавно переключились на NLog. Это гораздо более настраиваемо, мы можем определить различные цели для ошибок, фильтровать их, буферизировать их (еще не пробовали). Это очень хорошее улучшение.
Но недавно я обнаружил, что для этой цели в фреймворке .Net есть целое пространство имен : System.Web.Management , и его можно настроить в разделе healthMonitoring web.config.
Вы когда-нибудь работали с мониторингом здоровья .Net? Каково ваше решение для регистрации ошибок?
Есть ли способ обработки ошибок из объектов COM в RDML?
Есть ли способ обработки ошибок из объектов COM в RDML? Например, при вызове методов Word VBA, таких как PasteSpecial, возвращается ошибка и приложение LANSA завершает работу. Я не могу найти ничего в документации, чтобы разрешить обработку этих ошибок.
На самом деле, обработка ошибок вообще является слабым местом для LANSA и RDML, но это другая тема.
Как лучше всего сообщать об ошибках из рабочего процесса SharePoint?
У меня есть пользовательское действие в рабочем процессе, и я хотел бы сообщить об ошибке пользователю, когда что-то пойдет не так. Как лучше всего это сделать?
UPD: в идеале я хотел бы поместить рабочий процесс в состояние ошибки и записать сообщение в журнал рабочего процесса. Это кажется невозможным. Как можно ближе подобраться к нему? Я хочу, чтобы повторно используемый раствор,то, что легко для пользователей, чтобы настроить, когда через мои пользовательские действия в SharePoint дизайнер.
Добавил больше деталей к вопросу.
@mauro это заботится о сохранении ошибки, но как я могу отобразить ошибку пользователю таким образом, чтобы это имело смысл?
@AdamSane это кажется довольно хрупким решением. Это не вопрос настройки этого один раз на одном сайте. Мне нужно что-то, что другие могут добавить, используя SPD.
Как я могу регистрировать необнаруженные исключения в PHP?
Я выяснил, как преобразовать ошибки в исключения, и я хорошо отображаю их, если они не пойманы, но я не знаю, как их правильно регистрировать. Просто записать их в файл не будет полезно, не так ли? И вы бы рискнули получить доступ к базе данных, когда вы еще не знаете, что вызвало исключение?
Как поймать SQLServer тайм-аут исключения
Мне нужно специально поймать SQL исключений таймаута сервера, чтобы их можно было обрабатывать по-разному. Я знаю, что могу поймать SqlException, а затем проверить, содержит ли строка сообщения "Timeout", но мне было интересно, есть ли лучший способ сделать это?
try
{
//some code
}
catch (SqlException ex)
{
if (ex.Message.Contains("Timeout"))
{
//handle timeout
}
else
{
throw;
}
}