不要捕获一般的异常类型
我看msdn上说要重新throw一个异常或者捕获一个更具体的异常
问题:
1、如果引发的异常与我catch里定义的异常类型不一样时,会出现什么情况?
如:
try
{
inStream = File.Open(inFile, FileMode.Open);
} // Fix the first violation by catching a specific exception.
catch(FileNotFoundException e)
{
Console.WriteLine("Unable to open {0}.", inFile);
}
我是要把catch改成:catch(DivideByZeroException e)会出现啥情况?2、为什么要重新抛出一个异常?谢谢!
我看msdn上说要重新throw一个异常或者捕获一个更具体的异常
问题:
1、如果引发的异常与我catch里定义的异常类型不一样时,会出现什么情况?
如:
try
{
inStream = File.Open(inFile, FileMode.Open);
} // Fix the first violation by catching a specific exception.
catch(FileNotFoundException e)
{
Console.WriteLine("Unable to open {0}.", inFile);
}
我是要把catch改成:catch(DivideByZeroException e)会出现啥情况?2、为什么要重新抛出一个异常?谢谢!
解决方案 »
- 数组问题
- DataGridView 使单元格进入活动状态但不可编辑 ActiveOnly
- c#操控ad卡厂商的.h.lib
- 如何给动态生成的label添加click事件?
- win7旗舰版安装Visual Studio 2010 Ultimate失败 网上找了各种办法均失败啊,急救!!
- C# 一个放了6天无回复的问题 端口占用问题....郁闷...
- 请教一个问题:C#中int? a,Guid? guid是什么意思,?在这里是什么意思
- BalloonTipClicked事件不能被触发
- 怎样判断用户在IE地址栏中输入的地址时提示用户是否离开当前页!
- 构造函数为internal 的public abstract 类能否在程序集外被继承?
- 我在displayMessage.aspx页面怎样获得msgid的值
- 今日又升级了 散散分
出现 FileNotFoundException e) 类型的 异常 这个太容易catch 会 捉不到2、为什么要重新抛出一个异常?
主要是为了 防止 出现异常的 程序接着往下走 ,不可预知
抛出异常是为了 后面的语句 处理个人理解
说明:文件没有找到,会执行这个catch块里的内容,称为异常捕获到了,程序扔会执行下云我是要把catch改成:catch(DivideByZeroException e)会出现啥情况?
说明:(这个是除数为零错误)如果运行中出现文件找不到的错误,这时程序不知道怎么执行,会弹出一个提示异常的对话框,你要选择下一步的动作。也就是出现了异常,但程序没有捕获错误,而是.Net CLR帮你捕获到错误了,以免程序崩溃
如果不知道会出现什么样的错误,直接catch(Exception se)
则不论出现什么样的错误,都让你捕获到了
之所以派生出除零异常、找不到文件异常等等派生类,是因为可以在指定错误发生后进行特定的操作比如找不到文件:
catch(FileNotFoundException e){MessageBox.Show("文件不存在");}
比如除数为零:
catch(DivideByZeroException e){MessageBox.Show("除数不能为零");}比如用基类:
catch(Exception se){MessaageBox.Show("程序发生异常,但不知道具体异常类型");}你看看三个MessageBox.Show()函数的内容,前两个有针对性,后一个笼而统之