c语言中catch
墨初 知识笔记 134阅读
c语言能 try... catch吗?

答:C语言 也能 try ... catch! 现代编程 语言 ,基本都提供了 try ... catch 语法,用于进行程序逻辑的 异常处理 。 为什么要用 try ... catch ? 我们来看一下常规的程序写法: int biz_xxx (...) { // step1: do logic1 .... if (ret != 0) { // 错误 处理 1 ... } // step2: do logic2 ... if (iret != 0) { // 错误处...
catch 语句块是什么?

答:catch 语句块提供对错误的 处理 。 如果没有 try 语句,或者 try 语句没有出现错误,则 catch 语句不会被引发。 如果在 try 语句块的其 中 某个语句 中 检测到错误,则会执行附
如果不为0,执行catch中的语句需要pop吗?

答:如果不为0,则执行catch中的语句,不需要pop(因为throw中包含pop操作)。 pop一个jmp_buf,并且longjmp。 定义如下: 在这里,我们并没有讨论线程安全性,也没有讨论throw一个复合类型,但是功能上已经是实现了的。
catch子句和异常处理有什么区别?

答:Catch子句将获得一个指向已经不存在的对象的指针。 这种行为在设计时应该予以避免。 另外一个重要的差异是在函数调用者或抛出异常者与被调用者或异常捕获者之间的类型匹配的过程不同。 在函数传递参数时,如果参数不匹配,那么编译器会尝试一个类型转换,如果存在的话。 而对于异常处理的话,则完全不是这样。 见一下的例子: 抛出的是CString,如果用const char*来捕获的话,是捕获不到这个异常的。 尽管如此,在catch子句中进行异常匹配时可以进行两种类型转换。 第一种是基类与派生类的转换,一个 用来捕获基类的catch子句也可以处理派生类类型的异常。 反过来,用来捕获派生类的无法捕获基类的异常 。 catch (const void*) ... //可以捕获所有指针异常
