我正在开发一个Web项目,我需要添加自定义异常类。例如,如何在会话超时发生时从我的自定义异常类中显示消息?请帮忙。任何样本都会有所帮助。
这是我到目前为止在我的异常类中编写的内容:
public class CustomException : Exception
{
private string message;
public CustomException ()
{
this.message = "Invalid Query";
}
public CustomException (String message)
{
this.message = message;
}
}
需要知道如何将其与会话超时联系起来,从那里我需要编写相同的逻辑。谢谢。
答案 0 :(得分:1)
如果您想要提升自定义exception
,可以这样做。
try {
DataTable dt = q.ExecuteQuery(); //This throws a timeout.
} catch(SessiontTimeoutException ste) {
throw new CustomException("Session has timed out");
} catch(Exception e) {
//Show unexpected exception has occured
}
不太确定这是否是你要做的事
更新:
要查明SqlException是否为TimeoutException,请参阅此StackOverFlow Post.
答案 1 :(得分:0)
您可能希望将其写为
public CustomException() : base("Invalid Query") { }
这样,异常消息正确传递给另一个构造函数
public CustomException(String message) : base(message) { }
然后您不需要私人字符串消息字段。
答案 2 :(得分:0)
答案 3 :(得分:0)
我建议您使用Inner Exception
获取用户友好的异常消息以及系统错误消息。如果获得MyException
,您会在MyException.ToString()
看到您的异常消息和系统异常消息。
此外,如果您担心编码异常,可以使用VS的代码段功能。只需输入'Exception'并按TAB键两次,然后VS将创建Exception
类,如下面的代码。
try
{
DataTable dt = q.ExecuteQuery(); //This throws a timeout.
}
catch (SessiontTimeoutException ex)
{
throw new MyException("my friendly exception message", ex);
}
[Serializable]
public class MyException : Exception
{
public MyException() { }
public MyException(string message) : base(message) { }
public MyException(string message, Exception inner) : base(message, inner) { }
protected MyException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
}