[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Vala] try...finally misbehaving



try...finally doesn't seem to work correct when they are used without catch clause:

try {
	// Open resources
	// Error happens and get swallowed here instead of propagated
        //     after doing finally block
	...
} finally {
	// Clean up resources
}

---------

using GLib;

public static class TryFinallyTest {

	private static void method () throws Error {
		try {
			print ("before exception\n");
			throw new Error (Quark.from_string ("quark"), 42, "generated exception");
			print ("after exception\n");
		} finally {
			print ("doing finally block\n");
		}
	}

	public static int main (string[] args) {
		try {
			method ();
			print ("returned without exception\n");
		} catch (Error e) {
			print ("returned with exception\n");
		}

		return 0;
	}
}

result:
-------
before exception

** (process:17924): CRITICAL **: file try-finally-test.c: line 20: uncaught error: generated exception
after exception
doing finally block
returned without exception

expected:
---------
before exception
doing finally block
returned with exception


Regards,

Frederik


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]