.NET错误与异常处理机制的示例分析

发布时间:2021-07-12 14:38:19 作者:小新
来源:亿速云 阅读:191

这篇文章给大家分享的是有关.NET错误与异常处理机制的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

异常类

在C#中当出现某个特殊的异常错误条件时,就会创建抛出一个异常对象,这个对象包含有助于跟踪问题的信息。.Net提供了许多预定义的异常类,我们下面看看一些常见特别的异常类吧(异常类太多了,这里就介绍几个常见的)。

对于.Net类,一般的异常类System.Exception派生自System.Object,通常不在代码中抛出System.Exception泛型对象,因为他们无法确定错误情况的本质。

在该层次中有两个重要的类,他们派生自System.Exception类:

其他可能会用到的异常类包括:

使用try...catch...finally捕获异常

异常处理具有性能含义,在常见的情况下,不应该使用异常处理错误。应尽量编写好避免错误出现的代码。

在异常捕获中,我们可以实现多个catch块来针对不同的错误做出对应的错误处理。下面我们看一个例子:

class Program
 {
 static void Main(string[] args)
 {
  while (true)
  {
  try
  {
   string userInput;
   Console.WriteLine("请输入0-5之间任意一个数字:");
   userInput = Console.ReadLine();
   if (string.IsNullOrWhiteSpace(userInput))
   {
   break;
   }


   if (int.TryParse(userInput, out int index))
   {
   if (index < 0 || index > 5)
   {

    throw new IndexOutOfRangeException($"你输入的数字是{index}");

   }
   Console.WriteLine($"你输入的数字是{index}");
   }
   else
   {
   throw new Exception("请输入数字");
   }
  }
  catch (IndexOutOfRangeException ex)
  {
   Console.WriteLine($"你输入的数字不在此范围内.{ex.Message}");
  }
  catch (Exception ex)
  {

   Console.WriteLine(ex.Message);
  }
  finally
  {
   Console.WriteLine("谢谢合作");
  }

  
  }
 }
 }

在此事例中,定义了两个catch块。如果输入的超过规定返回的数字,则会抛出超出范围的错误也就进入对应的catch块。而输入的非数字也就进入了另外一个catch块进行处理。

下面我们看一看关于System.Exception属性。熟悉了解其中熟悉能更好的去观察理解抛出的异常错误。

属性

说明

Data

这个属性可以给异常添加键/值语句,以提供关于异常的额外信息

HelpLink

连接到一个帮助文件上,以提供关于该异常的更多信息

InnerException

如果此异常是在catch块中抛出的,它就会包含把代码发送到catch块的异常对象

Message

描述错误情况的文本

Source

导致异常的应用程序名或对象名

StackTrace

栈上方法调用的详细信息,它有助于跟踪抛出异常的方法

Hresult

分配给异常的一个数值

TargetSite

.NET反射对象,描述了抛出异常的方法

过滤异常、创建用户定义的异常

自从C#6开始就支持异常过滤器。Catch块仅在过滤器但会true时执行。捕获不同的异常类型时,可以有行为不同的代码块。在某些情况下,catch块基于异常的内容执行不同的操作。下面我们看下如何来使用异常过滤器吧:

 public class MyIndexOutOfException :SystemException
 {
  public MyIndexOutOfException(string message) : base(message)
  {

  }

  public int ErrorCode { get; set; }
 }

 class Program
 {
  static void Main(string[] args)
  {
   try
   {
    int steInput = 12;

    if (steInput > 10)
    {
     throw new MyIndexOutOfException("数据超出了范围") { ErrorCode = 1 };
    }

   }

   catch (MyIndexOutOfException ex) when (ex.ErrorCode!=1)

   {
    Console.WriteLine("出现了自定义错误");
   }

   catch (MyIndexOutOfException ex) when (ex.ErrorCode == 1)
   {
    Console.WriteLine(ex.Message);
   }

   catch (Exception ex)
   {

    throw;
   }
  }
 }

上面例子中,自定义了一个异常处理,同事增加ErrorCode,以此啦作为过滤条件,利用关键字When+条件来进行过滤。

感谢各位的阅读!关于“.NET错误与异常处理机制的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读:
  1. .NET同步与异步之EventWaitHandle的示例分析
  2. php中的错误处理与异常处理机制介绍

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:VS2012/VS2013中本地发布网站的问题有哪些

下一篇:JS出现失效怎么办

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》