- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
try
{
client.SendData(xml);
}
catch(Exception e)
{
string s = e.ToString();
if(s.Substring(0,80)=="System.InvalidOperationException: Operation not allowed on non-connected sockets")
{
client.tcpclient.Close();
clients.Remove(client.SessionId);
}
else if (s.Substring(0,71)=="System.IO.IOException: Unable to write data to the transport connection")
{
client.tcpclient.Close();
clients.Remove(client.SessionId);
}
else
{
client.tcpclient.Close();
clients.Remove(client.SessionId);
}
}
Например: http://jna.java.net/javadoc/platform/com/sun/jna/platform/win32/Win32Exception.html
а то что это ява - так это просто подарок
бальзам для души
И лучшее, что может сделать библиотека, предоставляющая доступ к WinAPI - это выбрасывать исключение типа Win32Exception в случае ненулевого кода ошибки.
единтсвенная альтернатива - не показывать код ошибки вообще
но это тотальный рак мозга
public int NativeErrorCode { get; }
http://msdn.microsoft.com/en-us/library/system.componentmodel.win32exception.nat iveerrorcode.aspx
т.е. это наследвенная травма
но если спросить МС - почему так?
public int Number { get; }
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.numbe r.aspx
они тоже скорее всего скажут про наследственность от SQL Server 1.0
и, конечно же, где-то внутри ADO.NET есть хелпер, который делает p/invoke к нативной скуль либе и получает аж локализованное сообщение об ошибке
точно прийдут
вот увидите
> такая хрень в стандартной упаковке
Пример не приведёте?
блох нервничает
мораль: так никогда не делать, даже если оборачиваешься вокруг натив либы, лучше наштамповать 100500 классов
ибо теория гласит, что модель исключений в первую очередь горизонтальна