- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
[WebMethod]
public void runCompareService(string mAuthToken, int documentId, int origVerNum, int revisedVerNum)
{
//string result = null;
DirectoryInfo tmpDirInfo = getTempDirectoryPath(documentId);
try
{
//authToken = authClient.AuthenticateUser(username, password);
authToken = mAuthToken;
otAuth.AuthenticationToken = authToken;
try
{
string origFilePath = String.Format(tmpFilePath, tmpDirInfo.ToString(), origVerNum);
string revisedFilePath = String.Format(tmpFilePath, tmpDirInfo.ToString(), revisedVerNum);
string resultFilePath = String.Format(tmpResFilePath, tmpDirInfo.ToString(), origVerNum, revisedVerNum);
string origContextId = getDocContextId(documentId, origVerNum);
string revisedContextId = getDocContextId(documentId, revisedVerNum);
try
{
downlodFileByContextId(origContextId, origFilePath);
downlodFileByContextId(revisedContextId, revisedFilePath);
try
{
doCompare(origFilePath, revisedFilePath, resultFilePath);
try
{
DownloadToBrowser(resultFilePath);
//uploadResultToCS(targetId, resultFilePath);
}
catch (Exception e)
{
throw new Exception(String.Format("Failed to Download To Browser. Error: {0}", e.ToString()));
}
}
catch (Exception e)
{
throw new Exception(String.Format("Failed to do compare method . Error: {0}", e.ToString()));
}
}
catch (Exception e)
{
throw new Exception(String.Format("Failed to create and download file. Error: {0}", e.ToString()));
}
}
catch (Exception e)
{
throw new Exception("Failed to get Context ID for version Exeption details: " + e.ToString());
}
}
catch (Exception e)
{
throw new Exception("Failed to auth user. Exeption details: " + e.ToString());
}
finally
{
docManClient.Close();
contentServiceClient.Close();
if (Directory.Exists(tmpDirInfo.ToString()))
{
tmpDirInfo.Delete(true);
}
}
}
vse_govno 04.03.2013 14:16 # +1
Наверное, даже, больнее, чем за catch(Exception). Хуже этого только пустой catch
Landing 04.03.2013 14:21 # 0
absolut 04.03.2013 14:42 # +2
Исключения как бы создавались для того, чтобы не писать в таком стиле. Иначе тут нет особого отличия от:
Bart 04.03.2013 17:11 # 0
Желательно не допускать более одного трая на функцию. В конце-концов, настолько ли серьезные ексептопроблемы решаются, чтобы тыкать траи во все поля и кричать 'throw!' по любому поводу? Это и затратнее при том.
bormand 04.03.2013 18:19 # 0
absolut 04.03.2013 19:46 # +2
3.14159265 04.03.2013 19:03 # +2
...
> нормальна такая вложенность траев
Нет.
>Чем заменить?
Убрать всё кроме try-finally. Ловить исключения только в корневых методах. Документировать методы, на предмет исключений, писать что может оттуда вылезти. Попытка сана заставить принудительно, в виде checked исключений, обосралась. Это совсем не значит что документировать - плохо.
>tmpDirInfo.Delete(true);
Эксепшон отсюда в один прекрасный день заглушит другие.
Жду разоблачений Тараса.
bormand 04.03.2013 19:59 # +2
RaZeR 04.03.2013 22:29 # 0
Втр, т прнс?
wvxvw 04.03.2013 22:33 # −3
bormand 05.03.2013 05:52 # +4
P.S. Попробуйте на досуге выслушать бектрейс от человека, который учил в школе немецкий, и, при этом, не может скинуть вам его ни на почту ни куда либо еще... Это очень увлекательное занятие, поверьте...
absolut 05.03.2013 07:21 # +1
Lure Of Chaos 05.03.2013 01:05 # 0
kegdan 05.03.2013 04:38 # +5
Благодарны за "System.Exception: Failed to auth user. Exeption details: System.Exception: Failed to get Context ID for version Exeption details: System.Exception: Failed to create and download file. Error: System.Exception: Failed to do compare method . Error: System.Exception: Failed to Download To Browser. Error: System.Exception: Здесь могла быть ваша ошибка!
в MainApp.Main() в c:\Users\Kegdan\Documents\Visual Studio 2012\Projects\ConsoleApplication12\Conso leApplication12\Program.cs:строка xx
в MainApp.Main() в c:\Users\Kegdan\Documents\Visual Studio 2012\Projects\ConsoleApplication12\Conso leApplication12\Program.cs:строка xy
в MainApp.Main() в c:\Users\Kegdan\Documents\Visual Studio 2012\Projects\ConsoleApplication12\Conso leApplication12\Program.cs:строка yx
в MainApp.Main() в c:\Users\Kegdan\Documents\Visual Studio 2012\Projects\ConsoleApplication12\Conso leApplication12\Program.cs:строка yy
в MainApp.Main() в c:\Users\Kegdan\Documents\Visual Studio 2012\Projects\ConsoleApplication12\Conso leApplication12\Program.cs:строка xz
в MainApp.Main() в c:\Users\Kegdan\Documents\Visual Studio 2012\Projects\ConsoleApplication12\Conso leApplication12\Program.cs:строка zx"?
absolut 05.03.2013 07:23 # 0
French?
guest 05.03.2013 15:25 # +2
Français!
wvxvw 05.03.2013 21:42 # −2
3.14159265 05.03.2013 21:47 # +3
Охуеть... Пользователь выполняет роль лога.
> человек хоть написал, что случилось
Ну да. Спасибо что показал мне эксепшен. Благодарность и премию заодно.
О. Вижу там NPE в Govno.class:265:42- щас пойду сам пофиксю.
wvxvw 05.03.2013 22:52 # +1
Пользователем может быть другой программист.
И вообще, скучно с вами :/ прикапались к херне какой-то.
bormand 06.03.2013 05:49 # +2
Я вот читаю бектрейсы только в двух случаях - прога моя или у меня есть исходники этой проги (например опенсурс). В остальных случаях - пускай автор сам с ними разбирается.
А в непонятных ситуациях гораздо интересней почитать понятные и подробные логи, и понять что именно привело к ошибке, чем таращиться на ее последствия в виде "System.Exception: Failed to auth user. Exeption details: System.Exception: Failed to get Context ID for version Exeption details: System.Exception: Failed to create and download file. Error: System.Exception: Failed to do compare method и 20 строк бесполезного без исходников бектрейса.
bormand 06.03.2013 05:53 # +4
scriptin 05.03.2013 22:45 # +6
MITtMIq 25.08.2021 07:22 # 0