c# 的Exception继承关系
时间: 2023-10-28 22:59:27 浏览: 256
在C#中,所有的异常都继承自`System.Exception`类。`System.Exception`类是所有异常的基类,它派生出了两个直接子类:`System.SystemException`和`System.ApplicationException`。
`System.SystemException`类表示系统级别的异常,如`OutOfMemoryException`和`StackOverflowException`等。
`System.ApplicationException`类表示应用程序级别的异常,它是.NET Framework 2.0之前的版本中推荐使用的类。从.NET Framework 2.0开始,微软建议开发者自定义异常时直接从`System.Exception`类派生,而不是从`System.ApplicationException`类派生。
除了这两个直接子类,还有很多其他的异常类,比如`ArgumentException`、`ArgumentNullException`、`ArgumentOutOfRangeException`等等。
相关问题
C# Exception
C#中的异常是一种用于处理程序运行时错误的机制。当程序发生错误时,可以抛出异常来中断程序的正常执行流程,并将错误信息传递给异常处理程序进行处理。
以下是一个简单的C#异常处理的例子:
```csharp
try
{
// 可能会引发异常的代码
int result = 10 / 0; // 除以零会引发DivideByZeroException异常
Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
// 异常处理代码
Console.WriteLine("Error: " + ex.Message);
}
finally
{
// 最终执行的代码,无论是否发生异常都会执行
Console.WriteLine("Finally block");
}
```
在上面的例子中,我们使用`try`块来包裹可能会引发异常的代码。如果在`try`块中发生了异常,程序会立即跳转到`catch`块,并执行异常处理代码。在`catch`块中,我们可以使用`ex`对象来访问异常的详细信息,例如错误消息。最后,无论是否发生异常,`finally`块中的代码都会被执行。
除了内置的异常类型,C#还允许我们创建自定义的异常类型来处理特定的错误情况。通过继承`Exception`类,我们可以定义自己的异常类,并在需要的地方抛出这些异常。
c# 自定义Exception类
在C#中,我们可以通过自定义异常类来处理应用程序中可能出现的异常情况。自定义异常类需要继承自`System.Exception`类。
以下是一个简单的自定义异常类的实现示例:
```csharp
public class MyException : Exception
{
public MyException()
{
}
public MyException(string message)
: base(message)
{
}
public MyException(string message, Exception innerException)
: base(message, innerException)
{
}
}
```
在上面的代码中,我们定义了一个名为`MyException`的自定义异常类。该类继承自`System.Exception`类,并提供了三个构造函数。第一个构造函数是默认的构造函数,第二个构造函数接受一个字符串参数,用于指定异常消息,第三个构造函数接受两个参数,第一个参数是异常消息,第二个参数是内部异常。
通过自定义异常类,我们可以在应用程序中抛出符合我们需求的异常,这样可以更好地处理应用程序中可能出现的异常情况。以下是一个示例:
```csharp
public class MyClass
{
public void DoSomething(int input)
{
if (input < 0)
{
throw new MyException("Input cannot be negative.");
}
}
}
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
try
{
myClass.DoSomething(-1);
}
catch (MyException ex)
{
Console.WriteLine(ex.Message);
}
}
}
```
在上面的代码中,我们在`MyClass`类的`DoSomething`方法中检查输入是否为负数,如果是负数,则抛出`MyException`异常。在`Main`方法中,我们捕获了`MyException`异常,并输出了异常消息。
阅读全文