例如,套接字异常可以返回超时相关消息或“主动拒绝”消息,这通常是由关闭的端口/用于其他用途的端口引起的。
我将如何基于此正确地做一个 switch case?
我可以只做一个 ex.Message.Contains()
但如果它在非英语系统上运行,消息将不是英语所以 .Contains()
不会匹配。
是否有某种我可以检查的签名或某种全局且不会更改的异常代码?
最佳答案
如果你正确使用try-catch
,即:
try
{
...
}
catch (SocketException ex) // this should have an s at the beginning...
{
}
您可以使用 Visual Studio 功能来获取它(编写 switch (ex.SocketErrorCode)
并按 tab):
switch (ex.SocketErrorCode)
{
case SocketError.AccessDenied:
break;
case SocketError.AddressAlreadyInUse:
break;
case SocketError.AddressFamilyNotSupported:
break;
case SocketError.AddressNotAvailable:
break;
case SocketError.AlreadyInProgress:
break;
case SocketError.ConnectionAborted:
break;
case SocketError.ConnectionRefused:
break;
case SocketError.ConnectionReset:
break;
// some dozens more
default:
break;
}
可以看到the docs找到您想要控制的任何情况。
关于c# - 如何处理来自同一个异常对象的不同类型的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52599551/