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版)》这本书中如下内容有点看不懂
麻烦解释下补充图片中的内容,谢谢
追答对于try{} finally{}来说,会先执行try语句块,不管try有没有异常,finally都会执行
但当try语句块有异常时,在执行完finally后,则会抛出异常,如果你没有在其它的地方捕获,则会出错。
所以没有catch是可以的,但是不代表可以不用捕获异常,而是把它抛出,需要在其它地方捕获了。
所以图片中的内容没错。
明白了,非常感谢
不求甚解不是学习的好习惯
追答在不该求甚解的地方求甚解更不是好习惯,你要刨根问底应该去看.net的开源代码。
http://referencesource.microsoft.com/
初学者 哪里知道什么改求甚解什么不该求甚解
我只是尽可能的去了解而已,如果东西太深,我自然会放弃,但总要先问一问,看能不能搞懂把
看得懂英文的msdn我还跑这里提问,真是脑子有病
你不知道就不知道,又不丢人
那不是msdn,是源代码,你还分什么类的管理员,你根本不适合。你以前也就多回答点vb而已。
那不是msdn,是源代码,你还分什么类的管理员,你根本不适合。你以前也就多回答点vb而已。
追问你真扯 我都说了我是初学者 又跟我扯VB 搞笑
追答那我已经回答你了,不要再在这个地方纠结了好吧。你可以不采纳,我也可以看看后面其他人还有什么高大上的回答。
追问你不带后面加那句不知所谓的话,我会跟你纠结?
你跑这里发一全英文网页,我会跟你纠结?
不想纠结无视就好了,做人低调点
好好一个提问贴 被你恶心的 我去
搞编程竟然反感英文?国内有易语言。
追问我不是反感,这里是百度知道
看看这里提问的都是写什么问题
你要在csdn发,没有任何问题
连个IDE都没用清白的人,你要别人去看全英文?
你跑这里发,显得你高大上?
如果说我发英文我是显摆,那你反对英文就是自甘堕落了。我承认我不懂为什么没catch就报错,但我即便不知道,不妨碍我编出优质的软件。你呢,你纠结好了没有。等你研究透了,你是否又可以告诉微软怎么修补C#的漏洞了?
追问说白了你就是看我说“不求甚解”不爽,发个英文网页堵堵我的嘴
不求甚解 又不是说你 你对号入什么坐
我发个问题,有人回答让我懂了,何乐而不为
你扯微软 有意思么
我要睡觉了,你也洗洗睡吧,过段时间我再来看其他人怎么回答的,OK?如果有更好的以后我学着回答一下。
追问别走啊 累一天 打打嘴炮也不错啊
也蛮锻炼逻辑思维的呀
我看了你补充的贴图,说两点,
找入门经典没错,但更好的是直接看msdn的示例和vs安装目录下的samples
你上面截图的基本是站在编译是否通过的角度来谈是否可以有catch,试问如果你try里面都是正确的代码是否就是和书上不冲突了?建议看书要看经典,这些入门的书有时候反而会误导人,你查一下那作者,看他开发过什么牛逼的软件没有,没准就只是个普通的大学老师。
麻烦解释下补充图片中的内容,谢谢
追答try{
}catch{}finally{}是一个结构,是一个语法.和英语的 as....as.. 一样.是个语句块.
他的组成是try开始,后面跟上 catch 或finally.当然,也可以都存在.
如果没有catch,你将无法获知 程序发生异常.catch的作用就是捕捉异常.
finally是善后.如果把try结构的程序比作生活的话,try相当于出生.中间都程序好比是正常的生活,catch就好比发生了意外事故.原本正常的生活结束(try之间的代码).
最后不管你有没有发生意外(catch),都会死亡(finally中的代码).
麻烦解释下补充图片中的内容,谢谢
追答写了try那么就必须写catch或者finally
如果只写了try和finally,不论是否发生异常,都会执行finally中的代码,然后有异常再抛出异常,没异常就继续程序后面代码
如果只写了try和catch,若发生异常,异常和catch要捕获的异常种类匹配,匹配成功就执行catch中的代码,异常终止;若匹配失败则抛出异常
如果只写了try和多个catch,若发生异常,异常从前往后(从上往下)一个一个匹配catch要捕获的异常种类,匹配成功就执行catch中的代码,异常终止;若所有的都匹配失败则抛出异常
如果写了try,catch,finally,若发生异常,匹配catch成功,则执行catch再执行finally,程序继续后面代码;匹配失败,则执行finally然后抛出异常;若没有异常,则执行finally,程序继续后面代码
如果写了try,多个catch,finally参考前面应该能知道了
清楚了,感谢