The SystemException is a predefined exception class in C#. It is used to handle system related exceptions. It works as base class for system exception namespace. It has various child classes like: ValidationException, ArgumentException, ArithmeticException, DataException, StackOverflowException etc.
It consists of rich constructors, properties and methods that we have tabled below.
[SerializableAttribute] [ComVisibleAttribute(true)] public class SystemException : Exception
| Constructors | Description | 
|---|---|
| SystemException() | It is used to initialize a new instance of the SystemException class. | 
| SystemException(SerializationInfo,StreamingContext) | It is used to initialize a new instance of the SystemException class with serialized data. | 
| SystemException(String) | It is used to initialize a new instance of the SystemException class with a specified error message. | 
| SystemException(String,Exception) | It is used to initialize a new instance of the SystemException class with a specified error message and a reference to the inner exception that is the cause of this exception. | 
| Property | Description | 
|---|---|
| Data | It is used to get a collection of key/value pairs that provide additional user-defined information about the exception. | 
| HelpLink | It is used to get or set a link to the help file associated with this exception. | 
| HResult | It is used to get or set HRESULT, a coded numerical value that is assigned to a specific exception. | 
| InnerException | It is used to get the Exception instance that caused the current exception. | 
| Message | It is used to get a message that describes the current exception. | 
| Source | It is used to get or set the name of the application that causes the error. | 
| StackTrace | It is used to get a string representation of the immediate frames on the call stack. | 
| TargetSite | It is used to get the method that throws the current exception. | 
| Method | Description | 
|---|---|
| Equals(Object) | It is used to check that the specified object is equal to the current object or not. | 
| Finalize() | It is used to free resources and perform cleanup operations. | 
| GetBaseException() | It is used to get root exception. | 
| GetHashCode() | It is used to get hash code. | 
| GetObjectData(SerializationInfo,StreamingContext) | It is used to get object data. | 
| GetType() | It is used to get the runtime type of the current instance. | 
| MemberwiseClone() | It is used to create a shallow copy of the current Object. | 
| ToString() | It is used to create and return a string representation of the current exception. | 
This class can be used to handle exception of subclasses. Here, in the following program, program throws an IndexOutOfRangeException that is subclass of SystemException class.
using System;
namespace CSharpProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                int[] arr = new int[5];
                arr[10] = 25;
            }
            catch (SystemException e)
            {
                Console.WriteLine(e);
            }
        }
    }
}