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