<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, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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>
<link rel="stylesheet" type="text/css" href="../cs.css">
</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-1606"></a><a name="index-exceptions_002c-python-1607"></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 <code>RuntimeError</code> exceptions.  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.  If you catch these exceptions in your Python code, your
exception handler will see <code>RuntimeError</code> or
<code>KeyboardInterrupt</code> as the exception type, 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><a name="index-gdb_002eGdbError-1608"></a>When implementing <span class="sc">gdb</span> commands in Python via <code>gdb.Command</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.  Use the <code>gdb.GdbError</code> exception
to handle this case.  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_OBSCURE)
     &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>
   </body></html>

