The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
# GConf Error test using Glib::Error.
# Copyright 2004 Emmanuele Bassi
# Released under the terms of the GNU General Public License.

use strict;
use warnings;
use Gnome2::GConf;

our $client = Gnome2::GConf::Client->get_default;

# try:
eval
{
	# if you ran the basic/complex gconf apps inside the examples/ directory,
	# this call should not fail.
	print $client->get_string('/apps/basic-gconf-app/foo') . "\n";
	
	# this call, on the other hand, will always fail.
	print $client->get_string('/apps/basic-gconf-app/') . "\n";

	1;
};
# catch:
if ($@)
{
	use Data::Dumper;
	use Glib;
	
	# catch Gnome2::GConf::Error
	if ($@->isa('Gnome2::GConf::Error'))
	{
		print "Catching a Gnome2::GConf::Error exception...\n";
		if (Glib::Error::matches($@, 'Gnome2::GConf::Error', 'bad-key'))
		{
			# print message...
			print "*** Our catched error:\n" . $@->message . "\n";
			
			# ...and recover from the 'bad-key' error.
		}
	}

	# this is always valid
	print "*** GConf error:\n$@\n";
	
	print Dumper($@) . "\n";
}

0;