这里是一位编码新手,正在寻求一些建议!
我有以下方法 - 一个简单的公斤到磅的重量转换器,这是一个更大的控制台应用程序的一部分。用户选择他们想要的转换方案,然后输入他们的体重,它将进行转换。我正在对其进行一些单元测试,以便更好地理解它们,并决定添加一些代码,如果用户输入负数,这些代码将返回异常,只是为了使其更加健壮。代码如下:
public static double KilogramsToPounds(string weightInKilos)
{
//Convert parameter to a double for calculation
double kiloWeight = Double.Parse(weightInKilos);
//Convert Kilograms to Pounds
double poundWeight = kiloWeight * 2.20462;
try
{
if (kiloWeight < 0)
{
throw new ArgumentOutOfRangeException();
}
else
{
return poundWeight;
}
}
catch (ArgumentOutOfRangeException argEx)
{
Console.WriteLine(argEx);
}
return 0;
}
但是,当它运行时,它将始终返回 0,因为它需要 double 作为其返回类型。因此,您会得到 ArgumentOutOfRange 异常,并且得到 0,因为它需要 double 值。
我只是想知道是否有任何方法可以基本上说“如果您输入低于 0 的数字,您会收到此错误消息,但如果您输入有效的正数,您将得到正确的数字结果强>”?因为似乎无论如何您都需要提供一个数值才能使其满意以及错误消息,否则您将收到“并非所有代码路径都返回值”错误。
非常感谢任何帮助。
注意 - 我应该添加字符串参数“weightInKilos”,该参数取自用户的控制台输入。显示选择的代码位于不同的文件中,并且转换率位于单独的文件中。
最佳答案
从您的方法中删除try-catch
。只需抛出你的异常即可。您的方法不应该捕获它自身引发的异常。
将 try-catch
放在对 KilogramsToPounds
的调用周围。
关于c# - 当方法需要 double 时尝试返回异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17657161/