私はPerl 6の制御例外を使いこなしています。 warnは、通常の例外制御フローには見えない制御例外を発生させ、その例外自体が再開します。それはちょっと涼しいです。Perl 6の警告制御の例外はどこにあるのですか?
だからこそ、この問題を抱えて、私はこれを書いて何が起こるかを見ました。
use v6;
try {
CONTROL {
put "Caught an exception, in the try";
put .^name;
}
do-that-thing-you-do();
}
sub do-that-thing-you-do {
CONTROL {
put "Caught an exception, in the sub";
put .^name;
}
warn "This is a warning";
}
それは両方の火のようになります:Moarパニック、I've raise an issue forがあります
Caught an exception, in the sub
CX::Warn
Caught an exception, in the try
CX::Warn
This is a warning
in sub do-that-thing-you-do at resume.p6 line 16
MoarVM panic: Trying to unwind over wrong handler
お知らせ私は、Perl 6が実際に何をするか見て以外の特定の問題を解決しようとしていませんよ。しかし、私はそれについて本当に尋ねていません。
私はここで流れの絵が好きです。私はサブのCONTROL
が例外を捕捉して再開することを期待していたので、try
までは浸透しませんでした。どのように流れなければなりませんか?
また、例外はCX::Warn
です。 、CATCH
と同様に(例外をキャッチし、両方の私はそこに奇妙な何かをやったとは思いませんが、Perl 6 typesは、デフォルトの警告ハンドラと同じ動作を取得するにはいなくても、リストX::Warn
'CX ::'名前空間全体がそのページに記載されていないことに注意してください... – Christoph
不足しているドキュメントについては、https://github.com/perl6/docに問題を追加してください。ありがとうございました! –
文書の問題:https://github.com/perl6/doc/issues/1268 –