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

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

// 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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值