关注我,为您分享C#技术分享
异常解释
为了让用户体验更好,为了程序即使出错也不瘫痪。
问题:
1.)我们需要用户输入一个整型,用户真的就输入了一个整型吗?
2.) 如果这个整型太大了或者太小了,怎么办?
例如:
string s;
int i;
s = “用户输入”;
i = int.Parse(s);
异常是指程序本身没有错,而在运行中发生的错误:
1.)用户输入错误引发
2.)数据库连不上
3.)其它因为运行环境导致错误
常见异常:
1.)被零除
2.)算术溢出
3.)访问数组越界
4.)对象引用为空
5.)找不到文件
try/catch块处理异常:当代码段有可能发生异常的时候,我们应该把该代码段放置在try中,捕获到异常后的处理方法放置在catch中。
运行结果:
代码示例:
try
{
int x = int.Parse(tb_1.Text);
int y = int.Parse(tb_2.Text);
int result;
switch (cb_yunsuanfu.Text)
{
case“+”:
result = x + y;
break;
case“-“:
result = x – y;
break;
case“*”:
result = x * y;
break;
case“/”:
result = x / y;
break;
default:
result = 0000;
break;
}
lb_result.Text = result.ToString();
if (result > 10)
{
thrownew ApplicationException(“亲,我不喜欢大于10”);
}
}
catch (FormatException fe)
{
MessageBox.Show(fe.Message);
//MessageBox.Show(“您输入有误,请核对后重新输入!”);
return;
}
catch (OverflowException ofe)
{
MessageBox.Show(ofe.Message);
return;
}
catch (DivideByZeroException dbe)
{
MessageBox.Show(dbe.Message);
return;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
finally
{
MessageBox.Show(“无论错还是对,都必须执行我”);
}
异常处理的系统流程:必须正确的排列捕获异常的catch子句,范围小的exception放在前面的catch子句,即如果exception之间有继承关系,把子类放在前面的catch子句中,把父类放到后面的catch子句中
finally关键字:确保一些收尾工作,finally段里的语句总在try or catch之后执行
finally
{
MessageBox.Show(“无论错还是对,都必须执行我”);
}
throw关键字:
类中可以抛出异常,不返回错误代码,不输出错误信息
if (result > 10)
{
thrownew ApplicationException(“亲,我不喜欢大于10”);
}
异常处理的特点:
1.)在应用程序遇到异常情况(如被零除情况或内存不足警告)时,就会产生异常。
在可能引发异常的语句周围使用try块。
2.)try块中发生异常后,控制流会立即跳转到关联的异常处理程序(如果存在)。
3.)如果给定异常没有异常处理程序,则程序将停止执行,并显示一条错误消息。
4.)如果catch块定义了一个异常变量,则可以使用它来获取有关所发生异常的类型的更多信息。
5.)可能导致异常的操作通过try关键字来执行。
6.)异常处理程序是在异常发生时执行的代码块。在C#中,catch关键字用于定义异常处理程序。
7.)程序可以使用throw关键字显式地引发异常。
8.)异常对象包含有关错误的详细信息,比如调用堆栈的状态以及有关错误的文体说明。
9.)即使引发了异常,finally块中的代码也会执行,从而使程序可以释放资源。
-
扫码下载安卓APP
-
微信扫一扫关注我们
微信扫一扫打开小程序
手Q扫一扫打开小程序
-
返回顶部
发表评论