DTP駆け込み寺
  1. [10616] JavaScriptの try{ }catch の使い方 ごえもん 2010/09/29 16:22
    1. [10617] Re:JavaScriptのtry{ }catchの使い方 hoge 2010/09/29 17:41
      1. [10626] Re: Re:JavaScriptのtry{ }catchの ごえもん 2010/09/30 17:59

[ 返信 ]

JavaScriptの try{ }catch の使い方

よろしくお願い致します。
環境はMacOS10.58、IndesignCS3です。JavaScriptは初心者です。
選択した表組の2列目のセル内のテキストに、
段落別にそれぞれ別の段落スタイルを適用させるようなスクリプトを以下のように作成しました。

var tableObj = app.activeDocument.selection;
var selColum1 = tableObj[0].columns[1];//2列目を定義
for (var i=0; i<selColum1.cells.length; i++)
{selColum1.cells[i].paragraphs[0].appliedParagraphStyle = "1行目";}
for (var i=0; i<selColum1.cells.length; i++)
{selColum1.cells[i].paragraphs[0].appliedParagraphStyle = "2行目";}

ただ、これではテキストのない(正確には2行目がない)セルが含まれているとエラーで止まってしまうので、
エラーの起こる箇所で以下のようにtry{ }catch(e){ }と入れてみるとエラーなく処理できました。

var tableObj = app.activeDocument.selection;
var selColum1 = tableObj[0].columns[1];//2列目を定義
for (var i=0; i<selColum1.cells.length; i++)
try{
{selColum1.cells[i].paragraphs[0].appliedParagraphStyle = "1行目";}
}catch(e){}
for (var i=0; i<selColum1.cells.length; i++)
try{
{selColum1.cells[i].paragraphs[1].appliedParagraphStyle = "2行目";}
}catch(e){}

ちゃんと動作はしているのですが、本来はifを使って2行目がないセルの処理をすべきなのでしょうか。
try〜を使ったこのようなエラー回避方法で問題がないのかどうかが気になります。
一概には言えないとは思いますが、ご意見ご指導の程よろしくお願い致します。

[10616] ごえもん (2010/09/29 Wed 16:22)

[ 返信 ]


Re:JavaScriptのtry{ }catchの使い方

読み込みが足りなくてやりたい事がよくわからなかったのですが、
通常、存在チェック的なことをするなら、
(CS3で動くかどうかはわかりませんが)

if(obj==null || typeof obj == "undefined"){
例外処理
}else{
通常処理
}

みたいな感じでしょうか?

[10617] hoge (2010/09/29 Wed 17:41)

[ 返信 ]


Re: Re:JavaScriptのtry{ }catchの

hogeさんありがとうございます。

説明不足で申し訳ありません。。
教えて頂いたプログラムを参考に試行錯誤してみます。

ありがとうございました!

[10626] ごえもん (2010/09/30 Thu 17:59)