我想处理自定义异常类的所有异常。我不想在try块中引发自定义异常我希望每个异常都会被我的自定义异常类捕获。
我不想这样做:
private static void Main(string[] args)
{
try
{
Console.WriteLine("Exception");
throw new CustomException("Hello World");
}
catch (CustomException ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
我想要这个:
private static void Main(string[] args)
{
try
{
Console.WriteLine("Exception");
throw new Exception("Hello World");
}
catch (CustomException ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
public class CustomException : Exception
{
public CustomException()
{
}
public CustomException(string message) : base(message)
{
}
public CustomException(string message, Exception innerException)
: base(message, innerException)
{
}
protected CustomException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
希望你能得到我的问题。
答案 0 :(得分:2)
您无法更改现有的异常类。
但是你可以捕获异常并将其转换为CustomException:
try
{
try
{
// Do you thing.
}
catch(Exception e)
{
throw new CustomException("I catched this: " + e.Message, e);
}
}
catch(CustomException e)
{
// Do your exception handling here.
}
我不知道这是你想要的,但我认为这是你能做的最接近的。
答案 1 :(得分:1)
我猜你想要实现这一点,因为你想要将每个异常视为一个CustomException。那么,为什么不以这种方式对待每一个例外?处理每个异常处理CustomException的方式。如果您不希望将某些异常作为CustomException处理,那么您想要实现的内容就不是您的问题。
如果您绝对必须 将所有内容视为CustomException,您可以执行以下操作;
try
{
//Something that causes any form of exception
}
catch (Exception ex)
{
throw new CustomException(ex.Message); //Caught and handled in another place.
}
但是,我不认为这是一种明智的做法。