pub fn throw_object(zval: Zval) -> Result<()> {
    let mut zv = core::mem::ManuallyDrop::new(zval);
    unsafe { zend_throw_exception_object(core::ptr::addr_of_mut!(zv).cast()) };
    Ok(())
}
Throws an exception object.

Returns a result containing nothing if the exception was successfully
thrown.

# Parameters

* `object` - The zval of type object

# Errors

*shrug*
TODO: does this error?

# Examples

```no_run
use ext_php_rs::prelude::*;
use ext_php_rs::exception::throw_object;
use crate::ext_php_rs::convert::IntoZval;

#[php_class]
#[php(extends(ce = ext_php_rs::zend::ce::exception, stub = "\\Exception"))]
pub struct JsException {
#[php(prop, flags = ext_php_rs::flags::PropertyFlags::Public)]
message: String,
#[php(prop, flags = ext_php_rs::flags::PropertyFlags::Public)]
code: i32,
#[php(prop, flags = ext_php_rs::flags::PropertyFlags::Public)]
file: String,
}

#[php_module]
pub fn get_module(module: ModuleBuilder) -> ModuleBuilder {
module
}

let error = JsException { message: "A JS error occurred.".to_string(), code: 100, file: "index.js".to_string() };
throw_object( error.into_zval(true).unwrap() );
```
src/exception.rs