自定义系统Exception实例以传递两个参数

本文关键字:两个 参数 Exception 系统 实例 自定义 | 更新日期: 2023-09-27 18:07:04

我需要自定义系统异常,而不使用用户定义的异常类。

以下是我的要求。

String ErrorMessage="";
Exception e= new Exception (ErrorMessage);

然后我需要抛出errorMessage字符串与一个整数参数在我的项目的上层。

所以有人能让我知道我是否可以自定义系统异常实例来传递两个参数(整数值和errorMessage字符串)?

自定义系统Exception实例以传递两个参数

一些真实的例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ExceptionExamples
{
    public static class Error
    {
        [Serializable]
        public class RegistryReadException : Exception
        {
            /// <summary>
            /// Message template
            /// </summary>
            static string msg = "Can't parse value from Windows Registry.'nKey: {0}'nValue: {1}'nExpected type: {2}";
            /// <summary>
            /// Can't read value from registry
            /// </summary>
            /// <param name="message"></param>
            public RegistryReadException(
                string message)
                : base(message) { }
            /// <summary>
            /// Can't read value from registry
            /// </summary>
            /// <param name="key">Key path</param>
            /// <param name="value">Real value</param>
            /// <param name="type">Expected type</param>
            public RegistryReadException(
                string key, string value, Type type)
                : base( string.Format(msg, key, value, type.Name) ) { }
        }
    }
}

这是不可能的。

你唯一的选择是创建一个继承System.Exception或其他异常类的新类,并在那里添加你需要的任何东西。

如果你不能或不愿那样做,那么你就不能做你想做的。

您可以创建一些自定义Exception类,并使用相同的代码TryCatch抛出它。但是在上层,您可以使用自定义类型捕获非泛型异常。

Try
{
    //Your try code Here
    if(/*Something Happens*/)
    {
       throw new YourCustomExceptionClass("Message");
    }
    else
    {
       throw new AnotherCustomExceptionClass("Other Message");
    }
}
Catch(YourCustomExceptionClass err)
{
   //This will be a type of exception
}
Catch(AnotherCustomExceptionClass err)
{
   //This will be another type of Exception
}