Fix fallible void return
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index b6bc099..88fc812 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -293,7 +293,11 @@
         outparam = Some(quote!(__return: *mut #ret));
     }
     if efn.throws {
-        expr = quote!(::cxx::private::r#try(__return, #expr));
+        let out = match efn.ret {
+            Some(_) => quote!(__return),
+            None => quote!(&mut ()),
+        };
+        expr = quote!(::cxx::private::r#try(#out, #expr));
     } else if indirect_return {
         expr = quote!(::std::ptr::write(__return, #expr));
     }