[英]how to create a function to tell me if a statement throws an exception or not in c#
我想让一个函数接受一条语句作为参数,可以是字符串,也可以是我不知道的其他类型,如果该语句的执行引发异常,则返回true,否则返回false。
这可能取决于某种“字符串”执行,我不知道如何在C#中执行。
确实,这样做的唯一原因是使测试代码更容易。
最好使用单元测试框架,例如NUnit或Visual Studio Team Test:
要说一个方法应该抛出一个异常,您可以添加ExpectedException
属性,例如:
[Test]
[ExpectedException(typeof(ArgumentException)]
public void NullUserIdInConstructor()
{
LogonInfo logonInfo = new LogonInfo(null, "P@ss0word");
}
如果您不添加此属性而方法抛出,则测试将自动失败。
为了完整起见,我还将回答您提出的问题:您无法执行字符串,但可以将Action作为参数传递。
bool ThrowsException(Action action)
{
try
{
action();
return false;
}
catch
{
return true;
}
}
您可以像这样使用它,例如:
bool result = ThrowsException(() => { throw new NotImplementedException(); });
就我而言,这是没有办法的。
如果我正确理解了这一点,则需要以下内容:
public static bool ActionSucceeds(Action action, out Exception exception)
{
try
{
action();
exception = null;
return true;
}
catch (Exception ex)
{
exception = ex;
return false;
}
}
您应该真正将代码的异常冒泡,该异常原本是用来检查所讨论方法的布尔值并以您喜欢的方式对其进行处理的。 异常非常适合处理特殊情况。 它不能很好地转换为尝试从方法返回true或false的情况。 多数民众赞成不是设计例外。 它给您的方法带来了不同的联系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.