code: def craise(self, condition, edata=None):
          r
          self._exh.raise_exception_if(
              self._exname, condition, edata, _keys=self._ex_data
          )
docs: r"""
          Raise exception conditionally.
  
          :param condition: Flag that indicates whether the exception is
                            raised *(True)* or not *(False)*
          :type  condition: boolean
  
          :param edata: Replacement values for fields in the exception message
                        (see :py:meth:`pexdoc.ExHandle.add_exception` for how
                        to define fields). Each dictionary entry can only have
                        these two keys:
  
                        * **field** *(string)* -- Field name
  
                        * **value** *(any)* -- Field value, to be converted into
                          a string with the `format
                          <https://docs.python.org/2/library/stdtypes.html#
                          str.format>`_ string method
  
                        If None no field replacement is done
          :type  edata: dictionary, iterable of dictionaries or None
  
          :raises:
           * RuntimeError (Argument \\`condition\\` is not valid)
  
           * RuntimeError (Argument \\`edata\\` is not valid)
  
           * RuntimeError (Argument \\`exname\\` is not valid)
  
           * RuntimeError (Field *[field_name]* not in exception message)
  
           * ValueError (Exception name *[name]* not found')