diff --git a/lib/Encode.pm6 b/lib/Encode.pm6 index 1173e94..4664200 100644 --- a/lib/Encode.pm6 +++ b/lib/Encode.pm6 @@ -2,6 +2,14 @@ module Encode; use Encode::Latin2; +my class X::Encode::Unknown is Exception { + has $.encoding; + + method message { + "Unknown encoding $.encoding." + } +} + my %encodings = 'iso-8859-2' => &latin2, 'iso_8859-2' => &latin2, @@ -10,7 +18,8 @@ my %encodings = ; our sub decode($encoding, buf8 $buf) { - die "$encoding NIY" unless %encodings{$encoding}.defined; + X::Encode::Unknown.new(:encoding($encoding)).throw unless %encodings{$encoding}.defined; + &(%encodings{$encoding})($buf); } diff --git a/t/01-basic.t b/t/01-basic.t index db5c5dc..171ddfe 100644 --- a/t/01-basic.t +++ b/t/01-basic.t @@ -5,5 +5,4 @@ use Test; plan 1; -Encode::decode("niy-encoding", buf8.new(97)); -dies_ok { Encode::decode("niy-encoding", buf8.new(97)) }, 'dies if NIY'; +throws_like 'Encode::decode("nyi-encoding", buf8.new(97))', X::Encode::Unknown, message => 'Unknown encoding nyi-encoding.';