Glib::Error - Exception Objects based on GError
eval { my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file ($filename); $image->set_from_pixbuf ($pixbuf); }; if ($@) { print "$@\n"; if (Glib::Error::matches ($@, 'Gtk2::Gdk::Pixbuf::Error', 'unknown-format')) { change_format_and_try_again (); } elsif (Glib::Error::matches ($@, 'Glib::File::Error', 'noent')) { change_source_dir_and_try_again (); } else { # don't know how to handle this die $@; } }
The point of having exception objects, however, is that the error messages in GErrors are often localized with NLS translation. Thus, it's not good for your code to attempt to handle errors by string matching on the the error message. Glib::Error provides a way to get to the deterministic error code.
You will typically deal with objects that inherit from Glib::Error, such as Glib::Convert::Error, Glib::File::Error, Gtk2::Gdk::Pixbuf::Error, etc; these classes are provided by the libraries that define the error domains. However, it is possible to get a base Glib::Error when the bindings encounter an unknown or unbound error domain. The interface used here degrades nicely in such a situation, but in general you should submit a bug report to the binding maintainer if you get such an exception.
Create a new exception object of type $class, where $class is associated with a GError domain. $code should be a value from the enumeration type associated with this error domain. $message can be anything you like, but should explain what happened from the point of view of a user.
Returns true if the exception in $error matches the given $domain and $code. $domain may be a class name or domain quark (that is, the real string used in C). $code may be an integer value or an enum nickname; the enum type depends on the value of $domain.
Register a new error domain. Glib::Error will be added @package::ISA for you. enum_package must be a valid Glib::Enum type, either from a C library or registered with "Glib::Type::register_enum". After registering an error domain, you can create or throw exceptions of this type.
Throw an exception with a Glib::Error exception object. Equivalent to "croak (Glib::Error::new ($class, $code, $message));".
This software is licensed under the LGPL. See Glib for a full notice.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |