- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 VS2015 C# 交互中运行了以下代码片段,得到了一些非常奇怪的行为。
> double divide(double a, double b)
. {
. try
. {
. return a / b;
. }
. catch (DivideByZeroException exception)
. {
. throw new ArgumentException("Argument b must be non zero.", exception);
. }
. }
> divide(3,0)
Infinity
> 3 / 0
(1,1): error CS0020: Division by constant zero
> var b = 0;
> 3 / b
Attempted to divide by zero.
>
为什么方法返回无穷大而 3/0 抛出错误而 3/b 抛出格式化错误?我可以强制除法抛出错误而不是返回无穷大吗?
如果我将方法重新格式化为
double divide(double a, double b)
{
if ( b == 0 )
{
throw new ArgumentException("Argument b must be non zero.", new DivideByZeroException());
}
return a / b;
}
新的 DivideByZeroException 是否包含与捕获的异常相同的所有信息和结构?
最佳答案
这是因为你使用了System.Double
。
如 MSDN 所述DivideByZeroException
仅针对整数类型和 Decimal
抛出。
那是因为很难为 Double 值定义“所谓的”零。
PositiveInfinity also results from a division by zero with a positive dividend, and NegativeInfinity results from a division by zero with a negative dividend. (source: MSDN again)
DivideByZeroException 不适用于浮点类型。注意:尽管在尝试除以零且被除数为零时,您可以获得 NaN
。
关于c# - 为什么此方法返回 double.PositiveInfinity 而不是 DivideByZeroException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576361/
我试图在执行除以 0 时捕获异常,但是,无论实现如何,代码都没有显示任何实质内容,总是声称结果是“无穷大”(意思是,从我得到的来看,它只是执行了除法而忽略了其他一切) 这是什么原因,如何补救? ope
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
您好,当我尝试在 GridView 中运行以下代码时,我遇到了这个错误Attempted to divide by zero。 当发生错误而不避免被零除时,如何通过返回零作为除法结果来避免此错误。 代
这非常慢: try { x = k / y; } catch (DivideByZeroException) { } 这大约快了 5 倍: if (y > 0) x = k / y; 谁能告诉
在某些情况下,throw 可以避免的错误是个好主意吗? 我特别想到了 DivideByZeroException 和 ArgumentNullException 例如: double numerato
import java.io.IOException; import java.util.*; public class calling { public static String s; publi
所以我一直在尝试用 C# 编写一个程序,该程序返回给定数字的所有因数(稍后我将实现用户输入)。该程序如下所示: //Number to divide long num = 600851475143;
我在 VS2015 C# 交互中运行了以下代码片段,得到了一些非常奇怪的行为。 > double divide(double a, double b) . { . try . { .
为了防止C#中的DivideByZeroException,人们经常写这样的东西 double f(double x) { if (x != 0.0) return 1000.0/x; els
我有一个使用 LINQ-to-SQL 和 SQL Server CE 4 的应用程序。我知道这不是官方支持的,但我们已经使它工作,但以下异常(exception)。有时,我们会在尝试更新数据库中的一行
我用 C# 编写了一个简单的 divide 函数: private string divide(int a, int b) { return string.Format
这是一个与this fascinating question about detecting divide by zero exceptions at compile time相关的问题. 从 Eri
根据 http://msdn.microsoft.com/en-us/library/system.dividebyzeroexception.aspx只有 Int 和 Decimal 在将它们除以
我是一名优秀的程序员,十分优秀!