异常捕获问题.

tobephonix 2003-04-07 09:44:16
在程序中使用
try
{
x = a/b;
}
catch(Exception)
{
x = 0;
}
本来的意图是当b=0时,执行x=0,实际运行时当b=0时并没有抛出异常,不知为什么?
...全文
91 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jonsonzxw 2003-04-07
  • 打赏
  • 举报
回复
看你的a,b是什么数据类型了,如果是int肯定会抛出异常,如果是double就不会
zwp315 2003-04-07
  • 打赏
  • 举报
回复
可以抛出异常:
int b=0;
int a=3;
int x;
try
{
x = a/b;
}
catch(Exception)
{
x = 0;
}
zhuohs 2003-04-07
  • 打赏
  • 举报
回复
不会吧?
int a=0;
double x=0;
try
{
x = 1/a;
}
catch(Exception err)
{
MessageBox.Show(err.Message);
x = 0;
}
MessageBox.Show(x.ToString());

我显示的错误信息是“试图除以零”,你怎么不报错呢?
Knight94 2003-04-07
  • 打赏
  • 举报
回复
???
你用的什么环境?
qqchen79 2003-04-07
  • 打赏
  • 举报
回复
double和float除零不会发生异常,这是符合IEEE浮点运算标准的。
通常的返回可以是Single/Double.NaN,在.NET上的返回则是Single/Double.Positive/NagetiveInfinity。
tobephonix 2003-04-07
  • 打赏
  • 举报
回复
运行时,当b=0时,并没有抛出异常,x = 无穷大
shuker 2003-04-07
  • 打赏
  • 举报
回复
不太可能不捕获这样的异常吧
Knight94 2003-04-07
  • 打赏
  • 举报
回复
应该捕获到了,我是这样写的
int a=int.Parse(textBox1.Text);//textBox1.Text="0"
double x=0;
try
{
x = 1/a;
}
catch(Exception err)
{
MessageBox.Show(err.Message);
x = 0;
}
MessageBox.Show(x.ToString());
贝贝壳壳 2003-04-07
  • 打赏
  • 举报
回复
输出x是什么?
seabirdforever 2003-04-07
  • 打赏
  • 举报
回复
x =(b==0)?0:(a /b);
Meyer 2003-04-07
  • 打赏
  • 举报
回复
C# 中的 double
是有 极大值 和 极小值 的概念的
所以 double 类型的 除法没有 除0异常
Knight94 2003-04-07
  • 打赏
  • 举报
回复
那估计是精度的问题,没把0当做整数的0处理
tobephonix 2003-04-07
  • 打赏
  • 举报
回复
被楼上说中了,我用的double类型,真是细微处见功夫啊

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧