« [AppleScripts]error number -10004 | トップページ | [AppleScripts]ドロップレットの作法を考える その3 エラーログを作成する »

[AppleScripts]ドロップレットの作法を考える その2 on error

環境の違い等でエラーになった場合に備えるのが
エラー制御

エラーが発生するのを前提に考えるわけですが
「考え過ぎ」は
スクリプトが複雑になったり、処理が重くなったりと
弊害もあるので
「案配」や「程度」も大事ですね。

ドロップレットでの処理の場合
スクリプトエディタ上で実行するように
イベントログやエラーメッセージを確認しにくい
そこをなんとかしたい


Website_image20130106_02308


ポイントは
◆エラーが発生した箇所が特定出来る事
◆エラーの内容を取得出来る事


------------------------------------------------■■■■ ダブルクリック起動の始まり
on run
------------------------------------------------【設定項目】ファイル選択ダイアログのデフォルトのディレクトリ
---set theDefLoc to path to shared documents from user domain
set theDefLoc to POSIX file "/Users/Shared/Downloads"
------------------------------------------------【設定項目】Uniform Type Identifier指定
------------------------------------------------詳しくは http://goo.gl/6jAQa Uniform Type Identifierを見てください
set theFileType to "public.png,public.jpeg" as text
---簡素の記述も出来ますPDFの場合---set theFileType to "PDF" as text
---ムービーファイルの場合---set theFileType to "public.movie,com.adobe.flash-video" as text
------------------------------------------------のファイルタイプをリスト形式に整形する
set AppleScript's text item delimiters to {","}
set theFileTypeList to every text item of theFileType
------------------------------------------------【設定項目】プロンプトの文言改行が使えます\nを入れます
------------------------------------------------Uniform Type Identifierとメッセージ
set theWithPrompt to theFileType & "\nファイルをえらんでください\n"
------------------------------------------------残りのメッセージ
set theWithPromptMes to "ファイルをドロップしても\n動作します"
------------------------------------------------ダイアログを出して選択されたファイルは「open」に渡す
open (choose file default location theDefLoc ¬
with prompt theWithPrompt & theWithPromptMes ¬
of type theFileTypeList ¬
invisibles true ¬
with multiple selections allowed without showing package contents)
end run



----------------------------------------------■■■■ openドロップ起動の始まり
on open theDropObj
----------------------------------------------IF文でエラー処理が無かった(正常終了)した場合の終了メッセージ
set theErrorPlaceMes to "処理が終了しました" as text
tell application "Finder"
----------------------------------------------■■■■ 繰り返しの始まり
repeat with theObjFiles in theDropObj
----------------------------------------------処理1
try
-----------------------◆◆◆ここに処理1
-----------------------エラーサンプル用のerror number -10004になる処理(これはOn Errorにならないので処理を中断しない)
do shell script "touch /tmp/test1.txt"


on error theErrorMsg number theErrorNum
----------------------------------------------【設定項目】ここの処理でエラーになった場合のエラーコード
set theErrorPlaceMes to "Er0001"
----------------------------------------------ダイアログを出してユーザーに知らせる
activate
display dialog (theErrorMsg & "" & theErrorNum & "\n" & "メールで↓のメッセージをお伝え下さい") ¬
default answer (theErrorPlaceMes & "" & theErrorMsg & "" & theErrorNum) ¬
with icon 1 default button 2
----------------------------------------------最後のダイアログ用にメッセージを整形
set theErrorPlaceMes to "エラーが発生して処理を中断しました:" & theErrorPlaceMes
end try
----------------------------------------------処理2
try
-----◆◆◆ここに処理2
-----------------------エラーサンプル用のerror number 1エラーになる処理
tell current application
do shell script "rm /tmp/test2.txt"
end tell



on error theErrorMsg number theErrorNum
----------------------------------------------【設定項目】ここの処理でエラーになった場合のエラーコード
set theErrorPlaceMes to "Er0002"
----------------------------------------------ダイアログを出してユーザーに知らせる
activate
display dialog (theErrorMsg & "" & theErrorNum & "\n" & "メールで↓のメッセージをお伝え下さい") ¬
default answer (theErrorPlaceMes & "" & theErrorMsg & "" & theErrorNum) ¬
with icon 1 default button 2
----------------------------------------------最後のダイアログ用にメッセージを整形
set theErrorPlaceMes to "エラーが発生して処理を中断しました:" & theErrorPlaceMes
end try
end repeat
----------------------------------------------処理終了ダイアログ 自動終了する
activate
display alert theErrorPlaceMes message "" as informational giving up after 1
end tell
end open

 

  
「error.app.zip」をダウンロード

「error.rtf」をダウンロード


「error_scpt.zip」をダウンロード


処理中のエラーの場合は
display alertでは無くdisplay dialogを使う事で
エラーコード等をコピー出来るようにしています。


Website_image20130106_63239


|

« [AppleScripts]error number -10004 | トップページ | [AppleScripts]ドロップレットの作法を考える その3 エラーログを作成する »

AppleScriptDroplet」カテゴリの記事