- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
private static void WriteErrLog(string FileName, string errors)
{
try
{
string name = Environment.CurrentDirectory + "\\log\\" + FileName.Replace("80020_", "");
name = name.Replace(".xml", ".txt");
if (File.Exists(name))
name = name.Replace(".txt", "_" + DateTime.Now.ToString("yyyy-MM-dd hh_mm_ss") + ".txt");
using (StreamWriter f = new StreamWriter(name, true, Encoding.GetEncoding(1251)))
{
f.Write(errors);
}
}
catch { }
}
Но о Path.Combine автор не слышал.
Запись лога в текущую директорию? Возможно автор не в курсе о том, что она может свободно измениться в процессе исполнения программы. Кроме того директория может быть защищена UAC. Нужно пользовать специализированные пользовательские папки или на крайний случай запрашивать права, если так уж нужно писать в другие места.
Все остальные мансы с именем файла, конкатенкация там, где лучше очевиднее использовать String.Format, глухой catch, да и само написание велосипедов для логирования....
В общем грустный код.
В данном случае, код отладочный, и если возникли проблемы с записью, автор предпочел промолчать.
Хотя не помешало бы вывести ошибку куда-то в другое место, например на консоль.
не знаю как в бейсике, но нормальные отладчики исключения журналируют, потом остановиться можно, стек посмотреть... хотя кому это нужно, работает же без ошибок
Потому что когда по логике исключения в принципе быть не должно, а оно есть, то лучше как-нибудь сообщить пользователю и попытаться работать дальше.
"нанести, смыть, повторить"
А давить всё подряд - моветон.
а) который что-то ловит и ничего не делает;
б) который всё ловит;
в) а) и б) вместе.
Т.е. аналог Resume Next от VB.
Т.е. что бы внутри трайкотча не случилось - без отладки этого никто никогда не узнает, разве что по косвенным признакам прерывания какой-то логики.