程序开发 > C# > 正文

C#异常处理throw Exception(全局、局部)

亮术网 2020-08-25 本网原创

设计再好的程序,在执行过种中也难免不会发生异常,异常处理不好就会影响用户使用,从而影响用户体验,最终会被用户抛弃,所以处理好异常是十分重要和必要的。

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;
    }
  }