举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > c#异常处理 C# 异常

c#异常处理 C# 异常

2023-02-25 08:18 C#教程

c#异常处理 C# 异常

c#异常处理

C#异常处理是一种编程技术,它可以帮助我们处理程序中可能出现的错误。当发生错误时,C#异常处理机制会抛出一个异常对象,这个对象包含了关于错误的信息。

C#异常处理机制使用try-catch-finally块来实现。try块用于定义要执行的代码,catch块用于捕获并处理异常,finally块用于执行在try或catch块之后必须执行的代码。

C#中还有一个throw关键字,它可以用来显式地抛出一个异常。throw关键字可以在catch块中使用,也可以在方法中使用,以便将异常传递到调用者。

try 
{ 
    // 要执行的代码 
} 
catch (Exception ex) 
{ 
    // 处理异常 
} 
finally 
{ 
    // 在try或catch之后必须执行的代码 
}

C# 异常

C#异常

using语句

许多类封装了非托管资源。

这些类实现 System.IDisposable ,它定义了一个名为Dispose的单一无参数方法来清理这些资源。

using语句提供了一个优雅的语法,用于在finally块中的IDisposable对象上调用Dispose。

如下:

using (StreamReader reader = File.OpenText ("file.txt")) {
    ...
}

等效于:

StreamReader reader = File.OpenText ("file.txt");
try {
    ...
} finally {
   if (reader != null) ((IDisposable)reader).Dispose();
}

抛出异常

异常可以由运行时或用户代码抛出。

在这个例子中,Display将抛出System.ArgumentNullException :

class Main {
   static void Display (string name) {
      if (name == null){
          throw new ArgumentNullException ("name");
      }
      Console.WriteLine (name);
   }
   static void Main() {
       try { 
          Display (null); 
       } catch (ArgumentNullException ex) {
          Console.WriteLine ("Caught the exception");
       }
   }
}

重新抛出异常

您可以捕获并重新抛出异常,如下所示:

try { 
   ... 
} catch (Exception ex){
    // Log error
    ...
    throw; // Rethrow same exception
}

System.Exception的键属性

System.Exception的最重要的属性如下:

  • StackTrace
    一个字符串,表示从异常原点调用到catch块的所有方法。
  • Message
    错误的字符串描述。
  • InnerException
    引起外部异常的内部异常。

常见异常类型

以下异常类型广泛用于整个CLR和.NET Framework。

  • System.ArgumentException
    抛出一个非法的赋值。
  • System.ArgumentNullException
    当函数参数为null时抛出的ArgumentException的子类。
  • System.ArgumentOutOfRangeException
    当数值参数太大或太小时抛出的ArgumentOutOfRangeException的子类。
  • System.InvalidOperationException
    当对象的状态不适合于方法时抛出。
  • System.NotSupportedException
    引发支持的函数。
  • System.NotImplementedException
    抛出一个未实现的函数。
  • System.ObjectDisposedException
    当调用函数的对象已经布置时抛出。

TryXXX 方法模式

int类型定义两个其两个版本的Parse 方法:

public int Parse (string input);
public bool TryParse (string input, out int returnValue);

如果解析失败, Parse 抛出异常; TryParse 返回 false

您可以通过 XXX 方法调用 TryXXX 方法来实现此模式,如下所示:

public return-type XXX (input-type input) {

return-type returnValue;

if (!TryXXX (input, out returnValue))
    throw new YYYException (...)
    return returnValue;
}
阅读全文
以上是编程学为你收集整理的c#异常处理 C# 异常全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • c#委托的理解 C# 委托

    c#委托的理解 C# 委托

    2023-02-25 C#教程

    C#委托委托是调用方法的对象。我们可以认为委托是函数指针或函数类型。委托类型定义委托实例可以调用的方法类型。委托类型定义...

  • c#委托的用法 C# 通用委托

    c#委托的用法 C# 通用委托

    2023-02-28 C#教程

    C# 通用委托委托类型可以包含通用类型参数。例如:public delegate T ConverterT (T arg);有了这个定义,我们可以编写一个适用于...

  • c#中输出型参数类型 C# 类型参数

    c#中输出型参数类型 C# 类型参数

    2023-02-27 C#教程

    C#类型参数类型参数可以在类,结构,接口,委托和方法的声明中引入。其他构造(如属性)不能引入类型参数,但可以使用一个。例...

  • c#泛型约束 C# 泛型约束

    c#泛型约束 C# 泛型约束

    2023-02-28 C#教程

    C#泛型约束默认情况下,类型参数可以用任何类型替换。约束可以应用于类型参数,以需要更具体的类型参数。这些是可能的约束:wher...

  • c#对象初始化器 C# 对象初始化

    c#对象初始化器 C# 对象初始化

    2023-02-27 C#教程

    C#对象初始化任何可访问的字段或对象的属性可以在构造之后通过对象初始化器直接设置。例如,考虑下面的类:public class Person ...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部