<html lang="en">
<head>
<title>Exception Handling - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Python-API.html#Python-API" title="Python API">
<link rel="prev" href="Basic-Python.html#Basic-Python" title="Basic Python">
<link rel="next" href="Values-From-Inferior.html#Values-From-Inferior" title="Values From Inferior">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988-2019 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software'' and ``Free Software Needs
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below.

(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
</head>
<body>
<div class="node">
<a name="Exception-Handling"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Values-From-Inferior.html#Values-From-Inferior">Values From Inferior</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Basic-Python.html#Basic-Python">Basic Python</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Python-API.html#Python-API">Python API</a>
<hr>
</div>

<h5 class="subsubsection">23.2.2.2 Exception Handling</h5>

<p><a name="index-python-exceptions-1899"></a><a name="index-exceptions_002c-python-1900"></a>
When executing the <code>python</code> command, Python exceptions
uncaught within the Python code are translated to calls to
<span class="sc">gdb</span> error-reporting mechanism.  If the command that called
<code>python</code> does not handle the error, <span class="sc">gdb</span> will
terminate it and print an error message containing the Python
exception name, the associated value, and the Python call stack
backtrace at the point where the exception was raised.  Example:

<pre class="smallexample">     (gdb) python print foo
     Traceback (most recent call last):
       File "&lt;string&gt;", line 1, in &lt;module&gt;
     NameError: name 'foo' is not defined
</pre>
   <p><span class="sc">gdb</span> errors that happen in <span class="sc">gdb</span> commands invoked by
Python code are converted to Python exceptions.  The type of the
Python exception depends on the error.

     <dl>
<dt><code>gdb.error</code><a name="index-gdb_002eerror-1901"></a><dd>This is the base class for most exceptions generated by <span class="sc">gdb</span>. 
It is derived from <code>RuntimeError</code>, for compatibility with earlier
versions of <span class="sc">gdb</span>.

     <p>If an error occurring in <span class="sc">gdb</span> does not fit into some more
specific category, then the generated exception will have this type.

     <br><dt><code>gdb.MemoryError</code><a name="index-gdb_002eMemoryError-1902"></a><dd>This is a subclass of <code>gdb.error</code> which is thrown when an
operation tried to access invalid memory in the inferior.

     <br><dt><code>KeyboardInterrupt</code><a name="index-KeyboardInterrupt-1903"></a><dd>User interrupt (via <kbd>C-c</kbd> or by typing <kbd>q</kbd> at a pagination
prompt) is translated to a Python <code>KeyboardInterrupt</code> exception. 
</dl>

   <p>In all cases, your exception handler will see the <span class="sc">gdb</span> error
message as its value and the Python call stack backtrace at the Python
statement closest to where the <span class="sc">gdb</span> error occured as the
traceback.

   <p>When implementing <span class="sc">gdb</span> commands in Python via
<code>gdb.Command</code>, or functions via <code>gdb.Function</code>, it is useful
to be able to throw an exception that doesn't cause a traceback to be
printed.  For example, the user may have invoked the command
incorrectly.  <span class="sc">gdb</span> provides a special exception class that can
be used for this purpose.

     <dl>
<dt><code>gdb.GdbError</code><a name="index-gdb_002eGdbError-1904"></a><dd>When thrown from a command or function, this exception will cause the
command or function to fail, but the Python stack will not be
displayed.  <span class="sc">gdb</span> does not throw this exception itself, but
rather recognizes it when thrown from user Python code.  Example:

     <pre class="smallexample">          (gdb) python
          &gt;class HelloWorld (gdb.Command):
          &gt;  """Greet the whole world."""
          &gt;  def __init__ (self):
          &gt;    super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
          &gt;  def invoke (self, args, from_tty):
          &gt;    argv = gdb.string_to_argv (args)
          &gt;    if len (argv) != 0:
          &gt;      raise gdb.GdbError ("hello-world takes no arguments")
          &gt;    print "Hello, World!"
          &gt;HelloWorld ()
          &gt;end
          (gdb) hello-world 42
          hello-world takes no arguments
</pre>
     </dl>

   </body></html>

