📜  c# 抛出异常 - C# (1)

📅  最后修改于: 2023-12-03 14:59:42.442000             🧑  作者: Mango

C# 异常处理

在 C# 中,异常是在程序执行期间遇到的问题或错误,它们可能导致程序终止或运行失败。为了处理这些异常,C# 提供了一些机制,让我们能够让程序在遇到异常时执行特定的代码块,或者让异常在整个程序中传递到更高层次的代码。

抛出异常

在 C# 中,我们可以使用 throw 关键字来抛出异常。一个简单的例子如下所示:

if(someCondition) 
{
   throw new Exception("This is an exception message");
}

这段代码中,如果满足 someConditionthrow 语句会抛出一个 Exception 异常,并将一个自定义异常消息传递给它。

我们也可以使用预定义的异常类,例如:

  • ArgumentException
  • ArgumentNullException
  • InvalidOperationException
  • NotSupportedException
  • FormatException

它们通常在特定的场景下被抛出,例如在方法参数无效、无法执行操作、不支持操作或格式不正确时。

捕获异常

为了捕获异常,我们需要使用 try/catch 语句。当程序运行到 try 块中的代码时,它会尝试执行,如果遇到异常,则会将控制权转移给 catch 块。一个简单的例子如下所示:

try 
{
   // Code that might cause an exception
}
catch(Exception ex) 
{
   // Code to handle the exception
   Console.WriteLine(ex.Message);
}

在上面的代码中,如果 try 块中的代码引发了异常,则控制权将转移到 catch 块中的代码,ex 会是抛出的异常对象。我们可以对异常进行处理或记录,使程序能够继续执行下去。

我们也可以使用多个 catch 块来捕获不同类型的异常,如下所示:

try 
{
   // Code that might cause an exception
}
catch(ArgumentException ex) 
{
   // Handle ArgumentException
}
catch(InvalidOperationException ex) 
{
   // Handle InvalidOperationException
}
catch(Exception ex) 
{
   // Handle any other exception
}
finally 
{ 
   // Code that will execute whether an exception occurs or not
}

在上面的代码中,我们捕获了可能的 ArgumentExceptionInvalidOperationException 异常,以及任何其他的异常。在这个例子中,我们也可以看到另一个关键字finally,它允许我们执行无论是否发生异常都必须执行的代码块。

抛出自定义异常

我们还可以定义自己的异常类,以便更好地描述我们的应用程序中的问题。为此,我们需要继承自 Exception 类。一个简单的例子如下所示:

class MyCustomException : Exception 
{
   public MyCustomException(string message) : base(message) 
   { 
   }
}

在这个例子中,我们定义了一个 MyCustomException 类,继承自 Exception 类。我们传递一个自定义的异常消息到基类的构造函数中。

我们可以使用如下代码抛出自定义异常:

if(someCondition) 
{
   throw new MyCustomException("This is my custom exception message");
}

在这个例子中,我们使用 throw 关键字抛出我们刚刚定义的自定义异常类。

最后,良好的异常处理是一个好的编程实践,可以帮助我们找到和修复潜在的问题并提高代码的健壮性。