>  > 【送料無料】 235/55R18 18インチ LEHRMEISTER レアマイスター LMスポーツRS10(ホワイト/リムポリッシュ) 7.5J 7.50-18 FALKEN ファルケン アゼニス FK510 SUV サマータイヤ ホイール4本セット

【送料無料】 235/55R18 18インチ LEHRMEISTER レアマイスター LMスポーツRS10(ホワイト/リムポリッシュ) 7.5J 7.50-18 FALKEN ファルケン アゼニス FK510 SUV サマータイヤ ホイール4本セット


送料無料■DAD ギャルソン グレイブ(グレイヴ)■ブラックポリッシュ■16inch 5.5J■4穴100mm +45■選べるタイヤ■165/45R16 > sequential programmingディクセル PD type ブレーキディスク フロント BMW E24 > error handling

Error Handling

【送料無料】 235/55R18 18インチ DA63T用 LEHRMEISTER ホイールセット レアマイスター LMスポーツRS10(ホワイト/リムポリッシュ) 7.5J 7.50-18 FALKEN ファルケン アゼニス FK510 SUV サマータイヤ ホイール4本セット

例外とは予期しない動作が起きたときのことを言います。
例えば、足し算をしようと思ったのに変数の中身がatomだった、などということがあげられます 17インチ サマータイヤ セット【適応車種:クラウンマジェスタ(210系 全グレード)】HOT STUFF エクシーダー E03 ダークシルバー 7.0Jx17トランパス mpZ 225/50R17。。

ある程度プログラミングをしたことがある人なら分かると思いますが、 複雑なプログラムにおいては例外は必ず生じるものです。
微塵の間違いもない正確なコードを書いたとしても、Erlang言語自体の中にバグもあるでしょうし、 外部的な要因(ネットワークが落ちた)などでも例外は起きます。

障害に強いコードを書くためにも例外処理はきちんと身につける必要があります。

Erlangにおける例外の概観

例外処理は少し難しいので、まずは全体像から見て行きましょう。

以下に例外処理の大まかな流れを書きます。
case文に非常に似ていることに注意して下さい 215/65R16 98H YOKOHAMA ヨコハマ BLUE EARTH RV02 ブルーアース RV-02 weds RIZLEY JT ウェッズ ライツレー ジェーティー サマータイヤホイール4本セット。

try 評価される式 of
 パターン1 ガード1 -> 処理1;
 パターン2 ガード2 -> 処理2;
 パターン3 ガード3 -> 処理3
catch
 例外のタイプ1: パターン1 ガ−ド1 -> 例外処理1;
 例外のタイプ2: パターン2 ガ−ド2 -> 例外処理2;
 例外のタイプ3: パターン3 ガ−ド3 -> 例外処理3
after
 例外が起きても起きなくても実行される処理
end

まず、"評価される式"が評価されます TOYOTIRES トーヨー ナノエナジー3プラス NANOENERGY3plus サマータイヤ 205/50R16 ブリヂストン BALMINUM Z5 ホイールセット 4本 16 X 6.5 +54 5穴 114.3。
このときエラーが発生したら、catchに飛びます。 なにもエラーが起きなかったらパターンマッチングとガードで任意の処理を行います。
この処理の最中にエラーが起きてもcatchに飛びます。 なにもエラーが起きなかったら通常通りに処理が行われます。

afterキーワードがあれば、通常処理が終わった後に afterキーワード内の処理を行ってから呼び出し元に帰ります。
afterキーワードがなかったならば、case文と全く同じ動作となります VW NEW BEETLE フロアマット【ハルトデザイン】New Beetle レザーマット前後4枚セット 左ハンドル ベース色:ブルー フチの色:ホワイト (ダイヤWステッチ)。

さて、ここではエラーが起きたと仮定しましょう。

そうすると、
マッチする例外のタイプ、パターン、ガードの順にマッチしていき、対応する例外処理を行います。
afterキーワードがあればキーワード内の処理を実行し、ないのであればそのまま呼び出し元に帰ります。

これが大まかな流れとなります。

レアマイスター LMスポーツRS10(ホワイト/リムポリッシュ) LEHRMEISTER 235/55R18 アゼニス 7.50-18 FALKEN 18インチ SUV サマータイヤ 【送料無料】 18インチ 7.5J LEHRMEISTER ホイール4本セット FK510 ファルケン

Erlangにおける例外のタイプは3つです。少ないので覚えてしまいましょう。

throw/1
普通の例外として、例外を投げる時に使用する。
この例外を投げられる対象は無視する(自分の上位にまかせる)か、
例外処理をすることが望まれる 【送料無料】 205/40R17 17インチ OZ SツーリズモLM 7J 7.00-17 DELINTE デリンテ D7 サンダー(限定) サマータイヤ ホイール4本セット。
throw(Why)と呼び出す。
exit/1
throwよりも重度の例外であり、プロセスを終了したい場合に投げる。
このプロセスが他のプロセスと協調しているのであれば、
相手のプロセスは何らかの対応が必要となる(後述)。
exit(Why)と呼び出す
error/1
Erlang Run-time(Erlang本体)が出したエラー。エラーとしては一番重度である。
たとえば、1+a などということをやったら発生する。
erlang:error(Why)というような形で任意に呼び出すことも可能であり、
その場合は重度のエラーであることを示している。

try catch サンプル

サンプルを通して動作を見ていきましょう。
なお、コードはプログラミングErlangのサイトにあったものの引用です。
非常に良い本なので、購入を検討してみては如何でしょうか。

-module(try_test).
-compile(export_all).
demo1() ->
 [catcher(I) || I <- [1,2,3,4,5]].
catcher(N) ->;
 try generate_exception(N) of
 Val -> {N, normal, Val}
 catch
 throw:X -> {N, caught, thrown, X};
 exit:X -> {N, caught, exited, X};
 error:X -> {N, caught, error, X}
 end.
 
generate_exception(1) -> a;
generate_exception(2) -> throw(a);
generate_exception(3) -> exit(a);
generate_exception(4) -> {'EXIT', a};
generate_exception(5) -> erlang:error(a).

簡単に解説します

まず、generate_exception/1関数を見て下さい。
1と4は普通ですね。
2,3,5はエラーを投げています。

この文が実行されるのは
catcher/1関数の中にある "try generate_exception(N) of"
という部分ですね。
この中で普通の処理(節1と節4)や、エラーが投げられたりしています。

【送料無料】 235/55R18 18インチ LEHRMEISTER レアマイスター LMスポーツRS10(ホワイト/リムポリッシュ) 7.5J 7.50-18 FALKEN ファルケン アゼニス FK510 SUV サマータイヤ ホイール4本セット【2016年最新モデル】


【国産タイヤ・ホイール 新品 4本セット】◆ホットスタッフ Gスピード P-04◆145/80R13 (145/80-13)新品ダンロップ エナセーブ EC203 【バランス調整済み!】


【送料無料】 235/55R18 18インチ LEHRMEISTER レアマイスター LMスポーツRS10(ホワイト/リムポリッシュ) 7.5J 7.50-18 FALKEN ファルケン アゼニス FK510 SUV サマータイヤ ホイール4本セット DIXCEL/ディクセル ブレーキディスクローター FS リア左右セット JAGUAR XJ12 XJ 5.0 V8 NA 年式:10/05~ 型式:J12LA 品番:FS055 7800S

↓↓↓KENDA ケンダ KR-201 サマータイヤ 215/50R17 HotStuff 軽量設計!G.speed P-04 ホイールセット 4本 17インチ 17 X 7 +48 5穴 100;ホンダ ジェイド FR4・5 18インチ アルミホイール 一台分(4本) JOKER ICE (ジョーカー アイス) シルバー アルミ;EMS 腹筋 パッド マシン イージーレボ EMSマスター ビッグスクリーン MEF-19 (mc-0681) EMS ダイエット エクササイズ easy-revo ビッグスクリーンで自由に設定 6プログラムモード+3セレクトモードのカスタマイズEMS, 「宇宙のくつ下」シリーズ Air Fit(エアフィット) ウェストベルト M エマイユホワイト, ローズ・ド・メイAbs. 1mL 生活の木, 【送料無料】カネボウ アフィニーク CHエッセンスファンデーション カラー:OC-B1, 【送料無料】ゲラン スーパーアクアジェルクリーム (日中用ジェルクリーム) 50ml【ネコポス不可】;アルティナ シートカバー スタンダード 9205 シートカラー:ブラック,グレー,ベージュ,アイボリー スズキ ソリオ MA15S G/Gリミテッド 2013年11月~2015年08月 DUNLOP DIREZZA Z3 215/40R17 (1本価格) 4本購入で送料無料 ダンロップ/ディレッツァ/17インチ↓↓↓YOKOHAMA ヨコハマ パラダ PARADA スペックX PA02 サマータイヤ 235/55R18 RAYS HOMURA A5S 18 X 8 +45 5穴 114.3, 20 ヴェルファイア シートカバー【シックスセンス】ヴェルファイア 20系 前期 ジュールシートカバーll 8人乗り 1列目手動シート 2列目手動シート レザーカラー:ブラック 刺繍&パイピングカラー:ピンク, 【送料無料】 215/35R19 19インチ FABULOUS ファブレス パンデミック LW-10 2ピース 7.5J 7.50-19 YOKOHAMA ヨコハマ ブルーアース A(AE50) SALE サマータイヤ ホイール4本セット【YOsum18】, ★送料無料★(一部離島等除く) 【エスペリア】SUBARU インプレッサG4 IMPREZA G4 GJ3 ダウンサス GJ3 FB16 H23/12~H26/11 4WD 1.6i-S / 1.6i-L / 1.6i アプライドモデル A~C リア, 【送料無料】KYB (カヤバ) NEW SR SPECIAL リア左右セット NSG5762*2本 トヨタ スプリンター TE71 1979/08~1983/04 KYB [自動車 サスペンション ]

【送料無料】 ピットワーク バッテリー 超高性能 Xシリーズ 日産 バネットトラック TC-SK82LN 用 AYBXL-85D23-01 車用 車 国産車 カーバッテリー バッテリー交換 PITWORK 自動車用バッテリー

↓↓↓↓↓↓


↓↓↓↓↓↓
↓↓↓↓↓↓

スロットキット ホルダーTYPE-3 チタンゴールド ステン金具 巻取Φ44 ACTIVE(アクティブ) Z1000/(ABS) 14~16年, 【USA在庫あり】 コブラ COBRA フルエキゾースト ドラッグパイプ 05年-09年 ブルバード VL800、VZ800 BLV3267 JP店, ●シルキーシャークプロジェクト●レガシィ B4 BL5 前期 A~C型 アイライン Type2 ブラックカーボン 綾織り クリア塗装済み, 『ギガ』 純正 2PG-CYL77C-VX-~ シートカバーDX (運転席シートサポート機能付) 1座 パーツ いすゞ純正部品 座席カバー 汚れ シート保護 オプション アクセサリー 用品, [KYB] カヤバ ショック ローファースポーツ リア 2本セット アウトランダー GF8W 12/10~15/07 4WD M/C前車 [24G] 送料1000円(税別) ※北海道・沖縄・離島は送料別途

[754/7122/1017] THULE ベースキャリアセット プジョー 306 E-N5,GF-N5 '93~'01 5ドア;クスコ CUSCO LSD type RS(1.5way(1&1.5way)) スズキ アルトワークス HA22S K6A用 送料無料 ニットー (TOYOの子会社) NITTO NT421Q 255/55R18 255/55-18 109W XL 4本 バルブ付 新品 取り寄せ 185/60R15 84H TOYO TIRES トーヨー タイヤ PROXES CF2 プロクセス CF2 STEINER FORCED SERIES SF-V シュタイナー フォースドシリーズ SF-V サマータイヤホイール4本セット;【店舗塗装サービス】【20 ヴェルファイア タケローズ】ヴェルファイア リアバンパースポイラー

19インチ サマータイヤ セット【適応車種:アリスト(160系)】WEDS レオニス CH ブラックメタルコートミラーカット 8.0Jx19NANOエナジー 3プラス 245/35R19;エスペリア Espelir スーパーダウンサス(リア) Super DOWNSUS ダイハツ アトレー S331G H19/9~

何も投げられなかったら、
"Val -> {N, normal, Val}"
が実行されて、

エラーが投げられたら、

catch
 throw:X -> {N, caught, thrown, X};
 exit:X -> {N, caught, exited, X};
 error:X -> {N, caught, error, X}
end.

の中にあるパターンにマッチしたものが起動されます。

generate_exception(2)は throw(a)なので
"throw:X -> {N, caught, thrown, X};"
がマッチします。他の2つもそれぞれマッチするものがありますね 。

実行結果を確認してみましょう

4> try_test:demo1().
[{1,normal,a},
 {2,caught,thrown,a},
 {3,caught,exited,a},
 {4,normal,{'EXIT',a}},
 {5,caught,error,a}]

1,4がnormalで、他は例外処理の中の設定になっていますね。

try catch サンプル2

-module(test).
-export([add/2]).
 
add(X,Y) ->
 try check_param(X,Y) of
 true -> {ok,X + Y}
 catch
 throw:Z -> {error,Z};
 _:_ -> {error,erlang:get_stacktrace()}
 end.
 
check_param(X,Y) when is_integer(X),is_integer(Y) -> true;
check_param(_X,_Y) -> throw(params_are_illegal).

_:_ は全てのエラーにマッチします。ちなみに、throwやexitもアトムとして表現されています。
erlang:get_stacktrace()は例外の詳細を報告する関数です。

1> test:add(4,5).
{ok,9}
2> test:add(dog,cat).
{error,params_are_illegal}

これはわざと起こしているエラーなので、例外処理を使わなくても処理できます。

たとえば、
add(X,Y) when is_integer(X),is_integer(Y) -> {ok,X+Y};
add(X,Y) -> {error, params_are_illigal}.
とするほうがスマートです。

今回は簡単な関数だったのでいいのですが、try ofの中に複雑な関数を入れたら、 立派に例外処理は働いてくれるでしょう

try catchサンプル3

try catchの最後に便利な手法を書きます。

try 使いたい関数
catch
 _:_ -> 例外処理
end

これは関数を実行した時にエラーがおきたら例外処理するというものです。
tryは省略形で使っています。以下のプログラムと同じ意味です。

try function() of
 X -> X
catch
 _:_ -> do_something
end

catch サンプル

例外処理はcatch単体でも可能です。

プログラミングErlangのサイトより引用。

-module(try_test).
-compile(export_all).
demo2() ->
 [{I, (catch generate_exception(I))} || I <- [1,2,3,4,5]].
 
generate_exception(1) -> a;
generate_exception(2) -> throw(a);
generate_exception(3) -> exit(a);
generate_exception(4) -> {'EXIT', a};
generate_exception(5) -> erlang:error(a).

実行結果

3> try_test:demo2().
[{1,a},
 {2,a},
 {3,{'EXIT',a}},
 {4,{'EXIT',a}},
 {5,
 {'EXIT',{a,[{try_test,generate_exception,1},
 {try_test,'-demo2/0-lc$^0/1-0-',1},
 {try_test,'-demo2/0-lc$^0/1-0-',1},
 {erl_eval,do_apply,5},
 {shell,exprs,6},
 {shell,eval_exprs,6},
 {shell,eval_loop,3}]}}}]

catch 処理

とやって、処理の途中にエラーが起きたら、エラーがタプルとなって帰って来ています。

例えば、
catch generate_exception(3)

{'EXIT',a}
が帰って来ていますね。

try catchより柔軟性はないので、細かい処理がしたいときはtry catchを使いましょう。

[KIWAMI] ブレーキパッド フロント用 いすゞ コモ JQE25 JQGE25 JCQGE25 JDQGE25 01/05~07/07
Erlang World TOP
サイトマップ
本家マニュアルの和訳

Erlangについて
Erlang言語とは
Windowsへのインストール
MacOSXへのインストール
emacs Erlangモード
Erlideのインストール

はじめてのErlang17インチ サマータイヤ セット【適応車種:スカイライン(V37系 純正17インチ車)】WORK MCOレーシング タイプCS ブラッディーレッド 7.0Jx17VEURO VE303 225/55R17
Erlangに触ってみる
Erlangの変数[RGH-RB650] RACING GEAR 純正交換HIDバルブ D2S/D2R 5000K スーパールーメンプラス
パターンマッチング
関数とBIF
Erlangシェルのコマンド

データタイプ
アトム(Atom)
タプル(Tuple)
リスト(List)
BIF listsモジュール
文字列、標準出力【送料無料】 DELINTE デリンテ DS8(限定). 235/55R19 105W XL タイヤ単品1本価格 フジコーポレーション
レコード(Record)
バイナリ(Binary)

モジュールと関数
モジュール(Module)
モジュール属性
関数
ガード(Guard)
ガード2
無名関数(fun)
パッケージ
マクロ(macro)

逐次プログラミング
if文

並列プログラミング

分散プログラミング
gen_tcp 2
inet

Open Telecom Platform
gen_server 2
supervisor 2
gen_event 2
gen_fsm 2


プログラミングErlang を Amazonで買う。

【送料無料】 235/55R18 18インチ LEHRMEISTER レアマイスター LMスポーツRS10(ホワイト/リムポリッシュ) 7.5J 7.50-18 FALKEN ファルケン アゼニス FK510 SUV サマータイヤ ホイール4本セット


Yuichi ITO. All rights reserved.
mail to :
{yahoojp}jpprem01-zenjp40-wl-zd-48581