switch (d)
{
case '+': c = a + b; break;
case '-': c = a - b; break;
case '*': c = a * b; break;
case '/': try { c = a / b; }
catch (Exception x)
{ MessageBox.Show(x.Message); }
break;
这是我写计算器的一段代码,为什么调试的时候,当运行除法,b=0的时候不能触发异常呢?textbox上显示的是正无穷或负无穷呢??
望高手解答一下
{
case '+': c = a + b; break;
case '-': c = a - b; break;
case '*': c = a * b; break;
case '/': try { c = a / b; }
catch (Exception x)
{ MessageBox.Show(x.Message); }
break;
这是我写计算器的一段代码,为什么调试的时候,当运行除法,b=0的时候不能触发异常呢?textbox上显示的是正无穷或负无穷呢??
望高手解答一下
解决方案 »
- 求助radiobutton与数据库问题
- 第五张贴,三个问题。
- 请教如何将手机的短信息提示给去掉
- treeview +xml 问题
- 如何让一个类能够同时被DataContractJsonSerializer序列化成JSON,又能够通过IFormatter序列化到文件
- C# RowFilter设置表的过滤条件问题
- 欲做一个C/S结构的管理信息系统,传统用VB或delphi,用c#效率如何?有没朋友有相关的例子??
- 这样的SQL语句怎么写?关于在两个SQL数据库服务器上查询
- ASP.NET中怎么编写上传文件到服务器的代码?
- 需求类似windows explore东东
- 如何把errorprovider控件绑定到textbox?
- 代码抢控件焦点,怎么解决?
{
if (textBox1.Text.Length == 0) return;
try
{
b = double.Parse(textBox1.Text);
}
catch(Exception x)
{
MessageBox.Show(x.Message);
}
switch (d)
{
case '+': c = a + b; break;
case '-': c = a - b; break;
case '*': c = a * b; break;
case '/': try { c = a / b; }
catch (Exception x)
{ MessageBox.Show(x.Message); }
break; }
textBox1.Text = c.ToString();
这是我实现等号时的代码,我觉得定义没错把!!
try
{
checked { c = a / b; } //<----
}
catch (Exception x)
{
MessageBox.Show(x.Message);
}
我的说法有两个错误,更正一下:
1、C#工程的默认设置是不抛出溢出异常(比如两个short相加大于short.MaxValue)。而check uncheck对整数的除零异常并无影响。
2、浮点数的除零并不抛出异常(我估计你的a或则b是浮点数)。
因为异常机制是要消耗一定资源的,你用if解决更好。
switch (d)
{
case '+': c = a + b; break;
case '-': c = a - b; break;
case '*': c = a * b; break;
case '/': if(b==0){MessageBox.Show("除0错误");c=0;}
else{ c = a / b; }
break;
}
C#工程的默认设置是不抛出除零异常,溢出异常等。你可以在项目中改变设置,或,在代码中要求检查: 怎么改变设置啊?