c# - 当方法需要 double 时尝试返回异常错误

标签 c# exception try-catch

这里是一位编码新手,正在寻求一些建议!

我有以下方法 - 一个简单的公斤到磅的重量转换器,这是一个更大的控制台应用程序的一部分。用户选择他们想要的转换方案,然后输入他们的体重,它将进行转换。我正在对其进行一些单元测试,以便更好地理解它们,并决定添加一些代码,如果用户输入负数,这些代码将返回异常,只是为了使其更加健壮。代码如下:

    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/

相关文章:

python - 无法从 python3/paramiko 捕获多个异常

c# - 在按钮中检测到 ActionLink 存在潜在危险的 Request.Path 值

javascript - 从 map 中的点坐标查找具有名称的谷歌地图地点

c# - Xamarin INetAddress.GetByName 总是抛出异常

C#,带有 IntPtr 的新位图,ArgumentException

Android 异常 getCause - getMessage

c++ - 可能 STL 迭代器方法抛出异常

c# - 为什么抛出异常时finally block 可能不执行?

c# - 如何在单击按钮时发送远程通知? Xamarin.Android C#

c# - 尝试/捕获 Image.FromStream() 而不捕获 using 语句的其余部分?