我需要在不使用用户定义的异常类的情况下自定义系统异常。
以下是我的要求。
gunzip MySQL-python-1.2.2.tar.gz
tar -xvf MySQL-python-1.2.2.tar
cd MySQL-python-1.2.2
python setup.py build
python setup.py install
然后我需要在项目中为上层抛出String ErrorMessage="";
Exception e= new Exception (ErrorMessage);
字符串和一个整数参数。
有人可以告诉我是否可以自定义系统Exception实例以传递两个参数(整数值和errorMessage
字符串)?
答案 0 :(得分:1)
一些真实的例子:
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) ) { }
}
}
}
答案 1 :(得分:0)
这根本不可能。
您唯一的选择是创建一个继承自System.Exception
或其他异常类的新类,并在其中添加您需要的任何内容。
如果你不能或不能做到这一点,那么你就无法做你想做的事。
答案 2 :(得分:-1)
您可以创建一些自定义异常类,并使用相同的代码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
}