[Gtk-sharp-list] More finetuned error/exception handling in gapi
Mike Kestner
mkestner at gmail.com
Tue Feb 12 12:02:19 EST 2008
> I noticed this one in MethodBody.cs:
>
> public void HandleException (StreamWriter sw, string indent)
> {
> if (!ThrowsException)
> return;
> sw.WriteLine (indent + "\t\t\tif (error != IntPtr.Zero) throw new
> GLib.GException (error);");
> }
>
> It would be nicer if I could put an exception creator here, in stead of
> having to use GException. For example one that creates me a specific
> type of Exception depending on the GError's domain and error code.
>
> Just like last question, the one about the asynchronous APIs, is
> something in place already to do this kind of things?
No, the GError conversion is hardcoded to GException currently.
> I was thinking about something like this:
>
> <add-node path="/api"><symbol name="ExceptionFactory"
> creater="Tny.ExceptionFactory.Create" /></add-node>
I would probably implement this via an error_handler attribute on the
namespace element. That way a different handler per library is possible
in api's with multiple namespaces and libraries.
A property on GenBase could expose it to the generator.
>
> public void HandleException (StreamWriter sw, string indent)
> {
> if (!ThrowsException)
> return;
> sw.WriteLine (indent + "\t\t\tif (error != IntPtr.Zero) throw {0}
> (error);",
> ExceptionFactory.Instance.ToString(););
> }
Probably would just add a parameter to HandleException to allow Ctor and
Method to pass in the error_handler. Both of those classes could just
look it up on their container_type.
Feel free to add an enhancement bug for this, and patches are welcome, of course.
--
Mike Kestner <mkestner at gmail.com>
More information about the Gtk-sharp-list
mailing list