在vs2010 C#中 用了异常处理语句try..catch..finally,调试器仍中断停止

本来就是练习异常处理的try..catch..finally语句,但当调试器运行到异常时却提示“异常”而中断,下面的语句无法继续执行,那这try..catch..finally还有啥存在的意义。求解如何正常运行该代码?
这是调试器自己提示的异常:(无论是逐句,还是继续执行,都不能进行“throw (new System.Exception());”之后的代码)

这是代码:
using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;
namespace ConsoleApplication4 {

class Program { static string[] eTypes = { "none", "simple", "index", "nested index" }; static void Main(string[] args) { foreach (string eType in eTypes) { try { Console.WriteLine("Main() try block reached."); Console.WriteLine("ThrowException(\"{0}\") called.", eType); ThrowException(eType); Console.WriteLine("Main() try block continues."); } catch (System.IndexOutOfRangeException e) { Console.WriteLine("Main() general catch block reached."); } finally { Console.WriteLine("Main() finally block reached."); } Console.WriteLine(); } Console.ReadKey(); }

// 这是后面的代码,由于提问字数限制,所以用图片显示出来,不好意思了

你的catcah只捕捉了 System.IndexOutOfRangeException,跟这你引发的System.Exception不是一回事呀,把 catch (System.IndexOutOfRangeException e)后面的删除只留下catch就行了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-29
你throw出去的意思本身就是要他停止,不想停止就像你说的用try catch不要throw追问

这个程序不是我写的,是从书上摘录的,为的就是学习在程序异常时,try..catch..finally语句的使用及其处理过程。就是用throw故意丢出错误,来看其处理的。
从道理上来说,是可以顺畅的执行,而不应该再报错,但实际运行确报错。所以本人猜想调试器的问题,某些功能要停止掉。

追答

就算程序没有问题,你用throw语句同样会报错

第2个回答  2013-08-29
1、throw会抛出一个异常,需要处理这个异常
2、调试是会中断,运行时应该不会。
第3个回答  2013-08-29
catch (System.IndexOutOfRangeException e) 这句限定了这个catch只能捕获System.IndexOutOfRangeException异常,也就是数组越界异常。除此之外的都不能捕获,所以你抛出的那些都不能被捕获,只能在那里弹出错误了。
一般想要自己throw的,要么使用自定义异常类型,要么catch写成catch (Exception e),这样才能保证一定能被catch住。
另外,楼上说的“你throw出去的意思本身就是要他停止,不想停止就像你说的用try catch不要throw
”,这句也是不对的,有些情况不是产生了异常,而是因为数据有问题,需要代码走入异常处理,这种时候用throw就是为了走到catch里,没有catch的情况才是向上抛,一直抛到有catch的地方,或者程序直接异常终了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网