编辑代码

#include <iostream>
using namespace std;
class BasicException
{
public:
    virtual string Where() { return "BasicException..."; }
};
class FileSysException : public BasicException
{
public:
    virtual string Where() { return "FileSysException..."; }
};
class FileNotFound : public FileSysException
{
public:
    virtual string Where() { return "FileNotFound..."; }
};
class DiskNotFound : public FileSysException
{
public:
    virtual string Where() { return "DiskNotFound..."; }
};
int main()
{
    try
    {
        //        .....  //程序代码
        DiskNotFound err;
        throw &err;
    }
    catch (BasicException *p)   //虚函数,基类指针指向派生类对象实现多态。
    {
        cout << p->Where() << endl;
    }
}