创建c#异常并不要抛出它
有没有比我在下面写的更好的方法来正确设置异常,就像抛出异常一样创建c#异常并不要抛出它,c#,exception-handling,C#,Exception Handling,有没有比我在下面写的更好的方法来正确设置异常,就像抛出异常一样 try { throw new Exception("Blah"); } catch (Exception exe) { Assert.NotNull(exe.StackTrace); DoSomeWork(exe); // throw; } 简单的回答是:不 系统异常属性填写如下: 默认情况下,在抛出异常对象之前立即捕获堆栈跟踪。当没有引发异常时,使用Environment.StackTrace获取堆栈跟踪信息 因此,如果您确实
try {
throw new Exception("Blah");
}
catch (Exception exe) {
Assert.NotNull(exe.StackTrace);
DoSomeWork(exe);
// throw;
}
简单的回答是:不 系统异常属性填写如下: 默认情况下,在抛出异常对象之前立即捕获堆栈跟踪。当没有引发异常时,使用Environment.StackTrace获取堆栈跟踪信息 因此,如果您确实需要一个处于抛出状态的
异常
对象,那么除了抛出并捕获它之外,没有其他好方法
仍然不要放弃主要问题:您真的需要异常对象吗
如果您有一个将System.Exception
作为输入参数的方法,并且您需要一个StackTrace,请考虑以下可能的解决方案:
private void MyCode()
{
Exception exe = new Exception("Blah");
exe.Populate();
DoSomeWork(exe);
}
public static void Populate(this System.Exception source)
{
try
{
throw source;
}
catch
{
}
}
简单的回答是:不 系统异常属性填写如下: 默认情况下,在抛出异常对象之前立即捕获堆栈跟踪。当没有引发异常时,使用Environment.StackTrace获取堆栈跟踪信息 因此,如果您确实需要一个处于抛出状态的
异常
对象,那么除了抛出并捕获它之外,没有其他好方法
仍然不要放弃主要问题:您真的需要异常对象吗
如果您有一个将System.Exception
作为输入参数的方法,并且您需要一个StackTrace,请考虑以下可能的解决方案:
private void MyCode()
{
Exception exe = new Exception("Blah");
exe.Populate();
DoSomeWork(exe);
}
public static void Populate(this System.Exception source)
{
try
{
throw source;
}
catch
{
}
}
var myExceptionIDontWantToThrow=新异常(“Blah”)代码>你说的“更好”是什么意思?你所说的“正确设置就像抛出时一样”是什么意思?你的最终目标是什么?正确设置是什么意思?您期望的输出是什么?他的意思是他想要StackTrace
,但它是null
。因此,真正的问题是:“如何在不引发异常的情况下获取stacktrace”如何使用代码>你说的“更好”是什么意思?你所说的“正确设置就像抛出时一样”是什么意思?你的最终目标是什么?正确设置是什么意思?您期望的输出是什么?他的意思是他想要StackTrace
,但它是null
。因此,真正的问题是:“如何在不引发异常的情况下获取stacktrace”使用如何?