終了

throw new Error() の catch について

Community Beginner ,
Aug 23, 2020 Aug 23, 2020

以前例外の処理について投稿しましたが、その続きとなります。

例えば、下記のように記述した場合はthrowしたErrorをcatchする事ができます。

itemNumber=0;
numberCheck ();

    alert("処理を終了します");

function numberCheck(){
    try{
        if(itemNumber!=0){
            throw new Error();
            }
       } 
    catch(e){
        alert("エラーが発生しました");
        }
}

しかし、下記のようなイベント内でthrowすると、catchできないようです。

try{
var dialog=new Window("dialog","用紙のサイズを入力",[0,0,300,200]);
dialog.add("statictext" , [40,-80,200,200] ,"用紙幅");
var width=dialog.add("edittext",[120,50,180,80] ,"100");

dialog.add("statictext" , [40,0,200,200] ,"用紙高さ");
var height=dialog.add("edittext",[120,90,180,120] ,"100");

var btnOK = dialog.add("button",[60,150,120,180],"OK",{name:'ok'});//OK
var btnCancel = dialog.add("button",[160,150,220,180],"Cancel",{name:'cancel'});
    
    btnOK.onClick=function(){
        alert("そのまま処理します");
        dialog.close();
        }
    
    btnCancel.onClick=function(){
        alert("エラー終了します");
        throw new Error();
        }
    dialog.center();
    dialog.show();
}
catch(e){
    alert("エラーが発生しました。");
    dialog.close();
    }
    alert("処理終了");

 もしかすると単純にブロック範囲を間違えているだけかも知れませんが、皆様はこのような時はどのように記述しておられますでしょうか?

ご教示頂ければ幸いです。

キーワード
スクリプティング
175
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Aug 24, 2020 Aug 24, 2020
最新

おそらくスコープの問題だと思います。ハンドラー内でトラップしてみたらどうでしょう?

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines