Update list of exceptions in the SWIG exception library
Document allowexcept feature git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8692 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
55d861f15e
commit
d70c0ac879
1 changed files with 33 additions and 5 deletions
|
|
@ -15,6 +15,7 @@
|
||||||
<li><a href="#Customization_nn3">Handling exceptions in C code</a>
|
<li><a href="#Customization_nn3">Handling exceptions in C code</a>
|
||||||
<li><a href="#Customization_nn4">Exception handling with longjmp()</a>
|
<li><a href="#Customization_nn4">Exception handling with longjmp()</a>
|
||||||
<li><a href="#Customization_nn5">Handling C++ exceptions</a>
|
<li><a href="#Customization_nn5">Handling C++ exceptions</a>
|
||||||
|
<li><a href="#Customization_allowexcept">Exception handlers for variables</a>
|
||||||
<li><a href="#Customization_nn6">Defining different exception handlers</a>
|
<li><a href="#Customization_nn6">Defining different exception handlers</a>
|
||||||
<li><a href="#Customization_nn7">Using The SWIG exception library</a>
|
<li><a href="#Customization_nn7">Using The SWIG exception library</a>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -255,7 +256,32 @@ class OutOfMemory {};
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<H3><a name="Customization_nn6"></a>11.1.4 Defining different exception handlers</H3>
|
<H3><a name="Customization_allowexcept"></a>11.1.4 Exception handlers for variables</H3>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
By default all variables will ignore <tt>%exception</tt>, so it is effectively turned off for all variables wrappers.
|
||||||
|
This applies to global variables, member variables and static member variables.
|
||||||
|
The approach is certainly a logical one when wrapping variables in C.
|
||||||
|
However, in C++, it is quite possible for an exception to be thrown while the variable is being assigned.
|
||||||
|
To ensure <tt>%exception</tt> is used when wrapping variables, it needs to be 'turned on' using the <tt>%allowexception</tt> feature.
|
||||||
|
Note that <tt>%allowexception</tt> is just a macro for <tt>%feature("allowexcept")</tt>, that is, it is a feature called "allowexcept".
|
||||||
|
Any variable which has this feature attached to it, will then use the <tt>%exception</tt> feature, but of course,
|
||||||
|
only if there is a <tt>%exception</tt> attached to the variable in the first place.
|
||||||
|
The <tt>%allowexception</tt> feature works like any other feature and so can be used globally or for selective variables.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="code">
|
||||||
|
<pre>
|
||||||
|
%allowexception; // turn on globally
|
||||||
|
%allowexception Klass::MyVar; // turn on for a specific variable
|
||||||
|
|
||||||
|
%noallowexception Klass::MyVar; // turn off for a specific variable
|
||||||
|
%noallowexception; // turn off globally
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<H3><a name="Customization_nn6"></a>11.1.5 Defining different exception handlers</H3>
|
||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -392,7 +418,7 @@ declarations. However, it never really worked that well and the new
|
||||||
%exception directive is much better.
|
%exception directive is much better.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<H3><a name="Customization_nn7"></a>11.1.5 Using The SWIG exception library</H3>
|
<H3><a name="Customization_nn7"></a>11.1.6 Using The SWIG exception library</H3>
|
||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -428,7 +454,7 @@ integer) and an error message string. The currently supported error
|
||||||
types are :</p>
|
types are :</p>
|
||||||
|
|
||||||
<div class="diagram"><pre>
|
<div class="diagram"><pre>
|
||||||
SWIG_MemoryError
|
SWIG_UnknownError
|
||||||
SWIG_IOError
|
SWIG_IOError
|
||||||
SWIG_RuntimeError
|
SWIG_RuntimeError
|
||||||
SWIG_IndexError
|
SWIG_IndexError
|
||||||
|
|
@ -438,7 +464,9 @@ SWIG_OverflowError
|
||||||
SWIG_SyntaxError
|
SWIG_SyntaxError
|
||||||
SWIG_ValueError
|
SWIG_ValueError
|
||||||
SWIG_SystemError
|
SWIG_SystemError
|
||||||
SWIG_UnknownError
|
SWIG_AttributeError
|
||||||
|
SWIG_MemoryError
|
||||||
|
SWIG_NullReferenceError
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -565,7 +593,7 @@ private:
|
||||||
the method will be destroyed, and therefore, the target language
|
the method will be destroyed, and therefore, the target language
|
||||||
should not attempt to deallocate it twice. This is similar to use the
|
should not attempt to deallocate it twice. This is similar to use the
|
||||||
DISOWN typemap in the first method argument, and in fact, it also
|
DISOWN typemap in the first method argument, and in fact, it also
|
||||||
depends on the target language to implement the 'disown' mechanism
|
depends on the target language on implementing the 'disown' mechanism
|
||||||
properly.
|
properly.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue