catch(Exception ex)
{
//do what you want here
//When type of exception is System.Web.Services.Protocols.SoapException
//if (ex.Code.Name.Equals("Client"))
//{
// msg = "service's function not exist";
//}
//else if (ex.Code.Name.Equals("Server"))
//{
// msg = "function error"
//}
//else
//{
// msg = "unknown";
//}
//MessageBox.Show(msg, "error", MessageBoxButtons.OK);
**But ex is not System.Web.Services.Protocols.SoapException so I cannot call ex.Code.Name.Equals("Client")**
//When System.Net.WebException
//switch (ex.Status)
//{
// case System.Net.WebExceptionStatus.ConnectFailure:
// do some thing
break;
// case System.Net.WebExceptionStatus.Timeout:
//do some thing
break;
// case System.Net.WebExceptionStatus.ProtocolError:
switch (((System.Net.HttpWebResponse)ex.Response).StatusCode)
{
case System.Net.HttpStatusCode.NotFound:
//do some thing
break;
case System.Net.HttpStatusCode.ServiceUnavailable:
//do some thing
break;
case System.Net.HttpStatusCode.Unauthorized:
//do some thing
break;
default:
//do some thing
break;
}
break;
default:
//do some thing
break;
}
}
但异常不是 System.Net.WebException。所以不能调用 ex.Status
我的问题:
我有一个 Smartclient 软件,包括作为客户端的 WindowsForm 和作为服务器的 Web 服务。客户端和服务器都是 n 层应用程序,我已经测试过,发现从客户端调用服务时有任何问题
- 在 app.config: 服务路径错误。我抓住System.NotSupportedException
- 或者当服务器无法连接时:System.Net.WebExceptionStatus
- 服务器的 webconfig 错误:System.InvalidOperationException
- 服务抛出异常:System.Web.Services.Protocols.SoapException ...
我的点子
我称作为所有其他异常类型的代表的异常是代表 AlException 我有命名空间:Common 和两个类代表AlException.cs和BusinessExceptionHandler.cs
使用参数作为 (representativeAlException ex) 创建一个通用函数
try
{
Err_LogCheck.Service1.Service1 service = new Err_LogCheck.Service1.Service1();
return service.getDeviceByZero(ZERO);
}
catch (Common.representativeAlException ex)
{
Common.BusinessExceptionHandler.ProcessException(ex);
}
我想做的事
调用服务的位置。只有一个 catch 块可以处理所有类型的异常
在ProcessException(representativeAlException ex)函数中
switch (ex)
{
case System.InvalidOperationException:
//Do some thing
break;
case System.NotSupportedException:
//Do some thing
break;
case System.Web.Services.Protocols.SoapException:
//do some thing
break;
...
...