<HTML>
<!--
     Copyright (c) Jeremy Siek 2002
    
     Distributed under the Boost Software License, Version 1.0.
     (See accompanying file LICENSE_1_0.txt or copy at
     http://www.boost.org/LICENSE_1_0.txt)
  -->
<Head>
<Title>Boost Graph Library: Exceptions</Title>
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" 
        ALINK="#ff0000"> 
<IMG SRC="../../../boost.png" 
     ALT="C++ Boost" width="277" height="86"> 

<BR Clear>

<h1><a href="../../../boost/graph/exception.hpp"><tt>boost/graph/exception.hpp</tt></a></h1>

<P>
The BGL defines several exception classes for reporting errors from
BGL algorithms. Many of the BGL algorithms place certain requirements
on the input graph. If these requirements are not met then the
algorithm can not successfully complete, and instead throws the
appropriate exception.
</P>

<h3>Synopsis</h3>

<pre>
  struct <a name="bad_graph">bad_graph</a> : public invalid_argument {
    bad_graph(const string& what_arg);
  };
  struct <a name="not_a_dag">not_a_dag</a> : public bad_graph {
    not_a_dag();
  };
  struct <a name="negative_edge">negative_edge</a> : public bad_graph {
    negative_edge();
  };
  struct <a name="negative_cycle">negative_cycle</a> : public bad_graph {
    negative_cycle();
  };
  struct <a name="not_connected">not_connected</a> : public bad_graph {
    not_connected();
  };
</pre>
