remove the 1-space indentation from remaining pages; mark with @todo tags parts of the docs which need to be written yet
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52706 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -8,75 +8,75 @@
|
||||
|
||||
/**
|
||||
|
||||
@page overview_exceptions C++ Exceptions
|
||||
@page overview_exceptions C++ Exceptions
|
||||
|
||||
@li @ref overview_exceptions_introduction
|
||||
@li @ref overview_exceptions_strategies
|
||||
@li @ref overview_exceptions_tech
|
||||
@li @ref overview_exceptions_introduction
|
||||
@li @ref overview_exceptions_strategies
|
||||
@li @ref overview_exceptions_tech
|
||||
|
||||
|
||||
<hr>
|
||||
<hr>
|
||||
|
||||
|
||||
@section overview_exceptions_introduction Introduction
|
||||
@section overview_exceptions_introduction Introduction
|
||||
|
||||
wxWidgets had been started long before the exceptions were introduced in C++ so
|
||||
it is not very surprising that it is not built around using them as some more
|
||||
modern C++ libraries are. For instance, the library doesn't throw exceptions to
|
||||
signal about the errors. Moreover, up to (and including) the version 2.4 of
|
||||
wxWidgets, even using the exceptions in the user code was dangerous because the
|
||||
library code wasn't exception-safe and so an exception propagating through it
|
||||
could result in memory and/or resource leaks, and also not very convenient.
|
||||
wxWidgets had been started long before the exceptions were introduced in C++ so
|
||||
it is not very surprising that it is not built around using them as some more
|
||||
modern C++ libraries are. For instance, the library doesn't throw exceptions to
|
||||
signal about the errors. Moreover, up to (and including) the version 2.4 of
|
||||
wxWidgets, even using the exceptions in the user code was dangerous because the
|
||||
library code wasn't exception-safe and so an exception propagating through it
|
||||
could result in memory and/or resource leaks, and also not very convenient.
|
||||
|
||||
wxWidgets is exception-friendly.
|
||||
It still doesn't use the exceptions by itself but it should be now safe to use the
|
||||
exceptions in the user code and the library tries to help you with this. Please
|
||||
note that making the library exception-safe is still work in progress.
|
||||
wxWidgets is exception-friendly.
|
||||
It still doesn't use the exceptions by itself but it should be now safe to use the
|
||||
exceptions in the user code and the library tries to help you with this. Please
|
||||
note that making the library exception-safe is still work in progress.
|
||||
|
||||
|
||||
@section overview_exceptions_strategies Strategies for exceptions handling
|
||||
@section overview_exceptions_strategies Strategies for exceptions handling
|
||||
|
||||
There are several choice for using the exceptions in wxWidgets programs. First
|
||||
of all, you may not use them at all. As stated above, the library doesn't throw
|
||||
any exceptions by itself and so you don't have to worry about exceptions at all
|
||||
unless your own code throws them. This is, of course, the simplest solution but
|
||||
may be not the best one to deal with all possible errors.
|
||||
There are several choice for using the exceptions in wxWidgets programs. First
|
||||
of all, you may not use them at all. As stated above, the library doesn't throw
|
||||
any exceptions by itself and so you don't have to worry about exceptions at all
|
||||
unless your own code throws them. This is, of course, the simplest solution but
|
||||
may be not the best one to deal with all possible errors.
|
||||
|
||||
Another strategy is to use exceptions only to signal truly fatal errors. In
|
||||
this case you probably don't expect to recover from them and the default
|
||||
behaviour -- to simply terminate the program -- may be appropriate. If it is
|
||||
not, you may override wxApp::OnUnhandledException()
|
||||
in your wxApp-derived class to perform any clean up tasks. Note, however, that
|
||||
any information about the exact exception type is lost when this function is
|
||||
called, so if you need you should override wxApp::OnRun() and
|
||||
add a try/catch clause around the call of the base class version. This would
|
||||
allow you to catch any exceptions generated during the execution of the main
|
||||
event loop. To deal with the exceptions which may arise during the program
|
||||
startup and/or shutdown you should insert try/catch clauses in
|
||||
wxApp::OnInit() and/or wxApp::OnExit() as well.
|
||||
Another strategy is to use exceptions only to signal truly fatal errors. In
|
||||
this case you probably don't expect to recover from them and the default
|
||||
behaviour -- to simply terminate the program -- may be appropriate. If it is
|
||||
not, you may override wxApp::OnUnhandledException()
|
||||
in your wxApp-derived class to perform any clean up tasks. Note, however, that
|
||||
any information about the exact exception type is lost when this function is
|
||||
called, so if you need you should override wxApp::OnRun() and
|
||||
add a try/catch clause around the call of the base class version. This would
|
||||
allow you to catch any exceptions generated during the execution of the main
|
||||
event loop. To deal with the exceptions which may arise during the program
|
||||
startup and/or shutdown you should insert try/catch clauses in
|
||||
wxApp::OnInit() and/or wxApp::OnExit() as well.
|
||||
|
||||
Finally, you may also want to continue running even when certain exceptions
|
||||
occur. If all of your exceptions may happen only in the event handlers of a
|
||||
single class (or only in the classes derived from it), you may centralize your
|
||||
exception handling code in wxApp::ProcessEvent
|
||||
method of this class. If this is impractical, you may also consider overriding
|
||||
the wxApp::HandleEvent() which allows you to handle
|
||||
all the exceptions thrown by any event handler.
|
||||
Finally, you may also want to continue running even when certain exceptions
|
||||
occur. If all of your exceptions may happen only in the event handlers of a
|
||||
single class (or only in the classes derived from it), you may centralize your
|
||||
exception handling code in wxApp::ProcessEvent
|
||||
method of this class. If this is impractical, you may also consider overriding
|
||||
the wxApp::HandleEvent() which allows you to handle
|
||||
all the exceptions thrown by any event handler.
|
||||
|
||||
|
||||
@section overview_exceptions_tech Technicalities
|
||||
@section overview_exceptions_tech Technicalities
|
||||
|
||||
To use any kind of exception support in the library you need to build it
|
||||
with @c wxUSE_EXCEPTIONS set to 1. This should be the case by default but
|
||||
if it isn't, you should edit the @c include/wx/msw/setup.h file under
|
||||
Windows or run @c configure with @c --enable-exceptions argument
|
||||
under Unix.
|
||||
To use any kind of exception support in the library you need to build it
|
||||
with @c wxUSE_EXCEPTIONS set to 1. This should be the case by default but
|
||||
if it isn't, you should edit the @c include/wx/msw/setup.h file under
|
||||
Windows or run @c configure with @c --enable-exceptions argument
|
||||
under Unix.
|
||||
|
||||
On the other hand, if you do not plan to use exceptions, setting this
|
||||
flag to 0 or using @c --disable-exceptions could result in a leaner and
|
||||
slightly faster library.
|
||||
On the other hand, if you do not plan to use exceptions, setting this
|
||||
flag to 0 or using @c --disable-exceptions could result in a leaner and
|
||||
slightly faster library.
|
||||
|
||||
As for any other library feature, there is a sample (@c except)
|
||||
showing how to use it. Please look at its sources for further information.
|
||||
As for any other library feature, there is a sample (@c except)
|
||||
showing how to use it. Please look at its sources for further information.
|
||||
|
||||
*/
|
||||
|
Reference in New Issue
Block a user