在编写程序时我们会经常遇到异常要处理的,比如:
- 用户输入除数时,不小心输入了零
- 程序在分配内存时,内存不够了
- 访问数组下标越界,
- 加载资源时,发现没有资源等
以上这些都是要在设计时就要考虑到的,异常处理也是程序设计中的一部份,不能说只设计程序怎么运行,不处理异常,这样的程序是不键壮的。
在C++语言中有比较规范的一套异常处理机制,C++异常处理也是C++中非常重要的组成部份。关键字: throw 抛出一种类型异常, try? 试着运行一段代码? ?catch捕捉异常(根据异常类型来捕捉异常)
C++异常处理流程:假设定义函数Fun,Fun内有异常后,抛出一个异常给调用者,自己不做处理。如果是Fun2调用了Fun函数,Fun函数抛出异常,Fun2捕捉到异常并处理了异常,异常在Fun2内就结束。如果Fun2没有处理异常,异常将向抛向Fun2的调用者,以此类推,直到main函数。
C++异常处理流程demo代码:
异常处理输出结果:
1 |
double类型异常 : a,b,c都等于0 |
相信看完代码可以更深刻的认识C++异常处理,异常处理可以让程序在编写时,只做定义抛出异常,让调用者完成异常部份的处理,这种推迟处理异常的方式在设计时非常重要。因为在定义函数时异常如果就处理掉,会对调用者编写程序更多限制,还有就是定义函数时也并不能准确的知道异常要如何处理。
通用异常捕捉catch(…)
如果捕捉异常时没有捕捉到对应类型异常,如果程序有定义catch(…)语言,异常将被catch(…)捕捉。catch(…)跟switch开关语句中的default用法类似。
1 2 3 4 |
catch(...) { cout<<"捕捉未知异常"<<endl; } |
一般程序中的异常处理部份设计的好,程序也会更健状。
Wow a good deal of great info. fluconazole medication
You stated it very well. canadian pharcharmy
Really tons of excellent info. kratom crazy
Whoa a good deal of amazing data! https://viagrapycharm.com/
Really loads of excellent data! Cialis 20 Mg Price At Costco
Thank you, Valuable stuff. hemp oil for pain
You’ve made your point extremely well.. valacyclovir
With thanks, I like this! cbd oil reviews
Beneficial info. Kudos. canadian pharmacies-24h
Thank you! Excellent stuff! cbd hemp oil
Thanks a lot. Quite a lot of write ups!
metformin bnf
Factor nicely regarded!! when does viagra patent expire
Great data, Regards. celexa generic
Nicely put, Thank you. viagra
You suggested this perfectly. hydrochlorothiazide 25 mg
Many thanks! An abundance of material.
canadian pharmacies online
Info nicely regarded!! canadian online pharmacies
Superb posts, Thanks a lot. baclofen 10mg
Regards! Useful stuff. Valacyclovir Reviews For Shingles
Very good information. Cheers. canadian cialis