15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


MFC support for thrown exceptions.

Paul Martinsen -- pmartinsen@hort.cri.nz
Thursday, November 28, 1996

Environment: Windows 95, MSVC 4.0

Hello,

I have been wondering if the MFC libraries provide any default 
support for handling exception that have been thrown. For example the 
following code will throw a resource exception if the display context 
can't be created:

void CMyView::DrawSomeStuff()
{ CClientDC dcMyView(this);

  dcMyView.MoveTo(0,0);
  dcMyView.DrawTo(100,100);
    :
    :
}

What will happen when the exception occurs. My guess is that the 
debug code will ASSERT, but will a release version crash? Should 
it have been coded:

void CMyView::DrawSomeStuff()
{ try
  { CClientDC dcMyView;

    dcMyView.MoveTo(0,0);
    dcMyView.DrawTo(100,100);
      :
      :
  } catch (...)
  { // Couldn't do drawing. User won't see anything,
    // but better than program crashing.
  }
}

Is there any way of testing these sort of things (system runs out of 
resources/ disk space/ memory) without buying more expensive 
software?

Thanks,
Paul Martinsen.



Mike Blaszczak -- mikeblas@nwlink.com
Saturday, November 30, 1996

At 13:11 11/28/96 +1200, Paul Martinsen wrote:
>Environment: Windows 95, MSVC 4.0

>I have been wondering if the MFC libraries provide any default 
>support for handling exception that have been thrown.

Any message that MFC ends up disptaching is done in the context
of a backstop exception handler.  You can see the code for it in
the AfxCallWndProc() function in WINCORE.CPP.  There are some
special case handlers (for exceptions thrown during the creation
of a window, for example).  There are also some functions which
are expected to throw an exception, like DoDataExchange(), where
MFC has other special purpose exception handlers.

>Should  it have been coded:

Yes.  As a rule, when writing software, you should anticipate
error conditions that can crop up and do something graceful
about them.

MFC's default handler will try to show a reasonable error for
the exception that was encountered. If you don't like what
MFC does, you can override ProcessWndProcException() in your
CWinApp-derived class.

>Is there any way of testing these sort of things (system runs out of 
>resources/ disk space/ memory) without buying more expensive 
>software?

I'm not at liberty to check at the moment, but I think the Win32
SDK has a tool in it called STRESS.  It allows you to force
certain low-resource conditions in a controlled way.

.B ekiM
http://www.nwlink.com/~mikeblas/
I'm afraid I've become some sort of speed freak.
These words are my own. I do not speak on behalf of Microsoft.





| Вернуться в корень Архива |