C++异常, 一个测试异常传递切割问题的程序

原创 2011年01月21日 23:37:00

异常传递过程异常累的切割问题,

// Test20110115.cpp : 定义控制台应用程序的入口点。
// 异常传递机制 案例调研

#include "stdafx.h"
#include<iostream>
#include<string>
#include<Windows.h>
#include<stdlib.h>
#include<math.h>


using namespace std;

class  myException
{
public:
 myException():excName("default baseExction")
 {
  cout<<"default myException construct"<<endl;
 }
 myException(string name)
 {
  excName = name;
  cout<<"myException construct"<<endl;

    
 }
 virtual string getName()
 {
  return excName;
 }

private: string excName;
};

class deriverExcetion:public myException
{
public:
 deriverExcetion():dexcName("defualt deriverExcetion")
 {
  cout<<"default deriverExcetion construct"<<endl;
 }
 deriverExcetion(string name)
 {
  dexcName =name;
  cout<<"deriverExcetion construct"<<endl;
 }
 string getName()
 {
  return dexcName;
 }

private: string dexcName;

};
int main(int argc, _TCHAR* argv[])
{
 cout<<"hello word"<<endl;
 string excMessage;
 deriverExcetion mydexc("deriverExcetion   constructed");
 ///cout<<" mydexc.getName() 地址:"<<(int)(&mydexc.getName())<<endl;
 try
 {
  throw &mydexc;
 }
 catch(myException *exc)
 {
  excMessage =exc->getName();
  cout<<"excMessage: "<<excMessage<<endl;
  //throw *exc;
 }
 try
 {
  throw mydexc;
 }
 catch(deriverExcetion exc)
 {
  excMessage =((myException)exc).getName();
  cout<<"excMessage: "<<excMessage<<endl;
  //throw ((myException)exc);
 }
 //catch(myException exc)
 //{
 // excMessage =exc.getName();
 // cout<<"excMessage: "<<excMessage<<endl;
 // //throw *exc;
 //}
 cin.get();
 return 0;
}

 

C++中禁止异常信息传递到析构函数外

 在有两种情况下会调用析构函数。第一种是在正常情况下删除一个对象,例如对象超出了作用域或被显式地delete。第二种是异常传递的堆栈辗转开解(stack-unwinding)过程中,由异常处理系统删除...
  • fisher_jiang
  • fisher_jiang
  • 2008年05月25日 11:17
  • 825

Java提高:采用异常链传递异常

一、分析           异常需要封装,但是仅仅封装还是不够的,还需要传递异常。一个系统的友好型的标识,友好的界面功能是一方面,另一方面就是系统出现非预期的情况的处理方式了。二、场景       ...
  • p106786860
  • p106786860
  • 2013年09月22日 09:40
  • 8072

连续捕获程序异常的处理器异常测试方法

摘要 一种连续捕获程序异常的处理器异常测试方法,包括:确定并初始化需要进行校验的异常类型以及捕获到的结果异常类型;设定用户层需要获取的异常类型;根据设定的异常类型的处置方式,设置异常发生时结果校...
  • dongwenkai365506
  • dongwenkai365506
  • 2016年07月08日 19:56
  • 423

c++异常处理,异常声明,捕获异常

 C++捕获异常的一些规则: 1.    非MFC的c++异常应该用过引用来捕获。使用引用来捕获异常不需要删除c++异常对象。因为使用引用捕获的异常对象会在栈中传递。而且保持了多态性,使得你捕获的异常...
  • bichenggui
  • bichenggui
  • 2009年11月16日 17:30
  • 4800

C++异常总结

C++异常 为什么要用c++的异常处理机制? 在我们平时写C语言程序时,经常出现会出现一些错误,有些是我们可以预测到的,这些我们可以通过返回错误码,或者设置回调函数打印错误信息等方法处理。但还有些...
  • dream_1996
  • dream_1996
  • 2017年09月10日 19:50
  • 459

如何写一个完善的c++异常处理类

我们的异常处理类的features 如何写一个异常处理类是一个不太容易的事情,最近刚好接触了一些不错的代码,看到了一些技巧,这里和大家分享一下。 一个相对完善的异常处理类(以及附加的一些东西)...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年05月22日 17:30
  • 550

CFileDialog程序异常退出问题

        我维护的一个工具,有一个参考VCKbase网站上的资料,生成一个win2000风格的文件选择对话框功能。在之前使用的都是好好的。后来有人反馈会自动退出,没有任何其他反馈提示信息。我实地...
  • bengold1979
  • bengold1979
  • 2008年06月24日 19:30
  • 2018

C++ 标准的异常

C++ 标准的异常
  • daoming1112
  • daoming1112
  • 2017年02月10日 20:04
  • 584

异常规范和c++11

《C++ Primer Plus》第六版 15.3.5 异常规范和C++11 有时候,一种理念看似有前途,但实际的使用效果并不好。一个?这样的例子是异常规范,这是c++98新增的一项功能,但c...
  • foto1991
  • foto1991
  • 2016年05月08日 15:07
  • 639

Junit4.8测试异常方法有3种方式

本篇讲述如何在 JUnit 4 下正确测试异常,我会从 try..catch 的方式谈起,然后说到 @Test(expected=Exception.class), 最后论及 @Rules publi...
  • a382064640
  • a382064640
  • 2016年01月26日 18:42
  • 2456
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++异常, 一个测试异常传递切割问题的程序
举报原因:
原因补充:

(最多只允许输入30个字)