不要捕获一般的异常类型
我看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、为什么要重新抛出一个异常?谢谢!

解决方案 »

  1.   

    catch改成:catch(DivideByZeroException e)会出现啥情况? 
    出现 FileNotFoundException e) 类型的 异常 这个太容易catch 会 捉不到2、为什么要重新抛出一个异常? 
       主要是为了 防止 出现异常的 程序接着往下走 ,不可预知
    抛出异常是为了 后面的语句 处理个人理解
      

  2.   

    catch(FileNotFoundException e)
    说明:文件没有找到,会执行这个catch块里的内容,称为异常捕获到了,程序扔会执行下云我是要把catch改成:catch(DivideByZeroException e)会出现啥情况?
    说明:(这个是除数为零错误)如果运行中出现文件找不到的错误,这时程序不知道怎么执行,会弹出一个提示异常的对话框,你要选择下一步的动作。也就是出现了异常,但程序没有捕获错误,而是.Net CLR帮你捕获到错误了,以免程序崩溃
      

  3.   

    需要处理就捕获,要么throw 出去。throw可以指定你要的异常类型。
      

  4.   

    所有异常类的基类都是Exception
    如果不知道会出现什么样的错误,直接catch(Exception se)
    则不论出现什么样的错误,都让你捕获到了
    之所以派生出除零异常、找不到文件异常等等派生类,是因为可以在指定错误发生后进行特定的操作比如找不到文件:
    catch(FileNotFoundException e){MessageBox.Show("文件不存在");}
    比如除数为零:
    catch(DivideByZeroException e){MessageBox.Show("除数不能为零");}比如用基类:
    catch(Exception se){MessaageBox.Show("程序发生异常,但不知道具体异常类型");}你看看三个MessageBox.Show()函数的内容,前两个有针对性,后一个笼而统之