永发信息网

c#异常,只有finally块为什么就不能捕获?

答案:6  悬赏:30  手机版
解决时间 2021-04-15 11:03
  • 提问者网友:疯子也有疯子的情调
  • 2021-04-14 23:12
int[] arr = { 1, 2, 3, 4, 5, 6 };

try {
arr[10] = 1;
}
//catch {
// Console.WriteLine("fsdfds");
//}
finally {
Console.WriteLine("error");
}
上面catch块被注释了,导致finally块无法进入
难道捕获异常必须要有catch块么?我在书上看 说只有try和finally也可以的呀

另外还有个问题

图中的 “引发”和“用户未处理的”
选和不选有什么改变 能不能消息说明下
谢谢了

补充:其实主要是对《c#入门经典(第6版)》这本书中如下内容有点看不懂









最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-04-15 00:18
finally里面一般放的是不管有没有异常都要执行的步骤,比如关闭数据库连接。
至于没有catch是什么样,我没试过,也不明白你为什么要对这个问题刨根问底。
全部回答
  • 1楼网友:天凉才是好个秋
  • 2021-04-15 04:19
catch是用来捕获异常的,你没有catch,即没有return,在try抛出异常无法继续执行。
  • 2楼网友:不如潦草
  • 2021-04-15 02:59
try catch finally 结构是,其中try标识开始异常监控; catch是捕捉其中的异常 finally是善后工作. finally无论是否发生异常都会执行. catch只有出现异常时才会执行
  • 3楼网友:孤独的牧羊人
  • 2021-04-15 02:26
对于这个,要先理解catch的意义:它是用于捕获try语句块中发生的异常。 而对于try{}finally{}如果执行try语句块中没出现异常,那么代码则能正常执行下去, 但当try中有异常呢,又没有catch,系统该怎么办呢。你不捕获,则系统只能抛出异常,导致程序中止。 因为对于异常,只有两种解决方法,要么抛出,要么捕获,你不捕获,只能抛出。 (这是我的个人理解,如有错误请指出)
  • 4楼网友:酒安江南
  • 2021-04-15 01:33
system.threading.thread.currentthread.abort(); 这句表示程序在此终止了、所以后面当然不会执行,回答完毕、、
  • 5楼网友:归鹤鸣
  • 2021-04-15 00:39
因为异常没处理 所以继续向上抛出 比如你写了catch快扑捉空指针异常 不捕获其他异常 如果遇到非空指针异常也会向上抛出
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯