// Включаемый файл для MFC
#include <afxwin.h>

int WINAPI WinMain(
					HINSTANCE	hInstance,
					HINSTANCE	hPrevInstance,
					LPSTR   	lpCmdLine,
					int     	nShowCmd
	) 
{
	try
	{
		CFile file("This file is absent", CFile::modeRead);
		// Здесь могут быть операторы, вызывающие другие 
		// исключения
	}

	// Обработчик для исключения типа CMemoryException
	catch(CMemoryException* ptrException)
	{
		MessageBox(NULL,"Memory Exception", "Exception", 
			MB_OK | MB_ICONSTOP);

		ptrException -> Delete();
	}

	// Обработчик для исключения типа CFileException
	catch(CFileException* ptrException)
	{
		if(ptrException -> m_cause == 
								CFileException::fileNotFound)
			MessageBox(NULL,"File Not Found", "Exception", 
				MB_OK | MB_ICONSTOP);

		else if(ptrException -> m_cause == 
								CFileException::diskFull)
			MessageBox(NULL,"The disk is full", "Exception", 
				MB_OK | MB_ICONSTOP);

		else MessageBox(NULL,"File Exception", "Exception", 
					MB_OK | MB_ICONSTOP);

		ptrException -> Delete();
	}

	// Обработчик для исключений класса CException и 
	// классов наследованных от него
	catch(CException* ptrException)
	{
		MessageBox(NULL,"Exception", "Exception", 
			MB_OK | MB_ICONSTOP);
		ptrException -> Delete();
	}
	
	// Все остальные исключения обрабатываются здесь
	catch(...)
	{
		MessageBox(NULL,"Another Exception", "Exception", 
			MB_OK | MB_ICONSTOP);
	}

	return 0;
}
