C#异常处理throw Exception(全局、局部)
设计再好的程序,在执行过种中也难免不会发生异常,异常处理不好就会影响用户使用,从而影响用户体验,最终会被用户抛弃,所以处理好异常是十分重要和必要的。
C#异常处理通常有两种方式,一种是在一个方法捕捉处理异常,另一种是全局处理异常,即一个软件、网站仅在一个公共方法中捕捉异常,并且把相关异常信息保存到一个出错日志文件中,以便修正异常。
一、C# throw exception 局部异常处理
在一个方法,估计程序可能会出错,可以用 try{}catch{} 做局部异常处理,可抛出异常,也可以弹出相关的提示,代码如下:
/// <summary>
/// C# throw exception 读取文件实例
/// </summary>
/// <param name="filePath">路径</param>
private void ReadFileException(string filePath)
{
try
{
StreamReader sr = new StreamReader(Server.MapPath(filePath));
string line = null;
while (line != null)
{
line = sr.ReadLine();
if (line != null)
Response.Write("<br />" + line);
}
}
catch (Exception ex)
{
//方法一
throw new Exception(ex.Message);
//方法二
throw new ArgumentNullException(ex.Message);
//方法三
throw new Exception("读取文件错误!");
}
}
调用方法:ReadFileException(@"G:\xq\test\error.txt";);
二、C#全局异常处理
网站与软件(应用程序),全局异常处理不同。网站只需要在 Global 文件捕捉异常即可,软件则在程序入口 main() 方法中捕捉,下面以网站全局捕捉异常为例,软件的实例将在下一篇文件中介绍。
/// <summary>
/// C#全局异常处理网站实例
/// </summary>
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError().GetBaseException();
SaveErrLog.AddLog(ex);//用xml保存错误日志,要自己写程序
this.Server.ClearError();
this.Response.Redirect("404网页");
}
三、C# 特殊异常处理
某些时候发生异常并不需要记录错误信息或弹出提示,只需要纠正错误即可。如翻页时,当用户输入的页码超过范围或不是数字时,只需要把它纠正为最后一页或第一页,代码如下:
/// <summary>
/// C#特殊异常捕捉处理示例
/// </summary>
/// <param name="pageNum">页码</param>
/// <returns>整型的页码</returns>
private int SpecialException(string pageNum)
{
try
{
return int.Parse(pageNum);
}
catch
{
return 0;
}
}