>  > DUNLOP ダンロップ WINTER MAXX 01 ウィンターマックス WM01 2018年製造品 在庫 スタッドレス スタッドレスタイヤ 165/65R15 HotStuff 軽量設計! G-SPEED G-03 ブラック ホイールセット 4本 15インチ 15 X 4.5 +45 4穴 100

DUNLOP ダンロップ WINTER MAXX 01 ウィンターマックス WM01 2018年製造品 在庫 スタッドレス スタッドレスタイヤ 165/65R15 HotStuff 軽量設計! G-SPEED G-03 ブラック ホイールセット 4本 15インチ 15 X 4.5 +45 4穴 100


【送料無料】 205/55R16 16インチ MANARAY マナレイ ユーロスピード BL-10 6J 6.00-16 KINGSTAR キングスター SK10 サマータイヤ ホイール4本セット > sequential programming16インチオーリスE180系WEDS ウェッズスポーツ SA-20R ウォースブラッククリア 7.0Jx16エナセーブ RV504 205/55R16 > error handling

Error Handling

DUNLOP ダンロップ タイヤホイール4本セット WINTER MAXX 01 ウィンターマックス WM01 2018年製造品 在庫 スタッドレス スタッドレスタイヤ 165/65R15 HotStuff 軽量設計! G-SPEED G-03 ブラック ホイールセット 4本 15インチ 15 X 4.5 +45 4穴 (品番:802) 100

例外とは予期しない動作が起きたときのことを言います。
例えば、足し算をしようと思ったのに変数の中身がatomだった、などということがあげられます DUNLOP ダンロップ LEMANS5 ルマンV LM705 サマータイヤ 205/55R17 MANARAY FINAL SPEED GR-Volt ホイール 4本セット 17 X 7 +48 5穴 114.3。。

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

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

Erlangにおける例外の概観

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

以下に例外処理の大まかな流れを書きます。
case文に非常に似ていることに注意して下さい DUNLOP ダンロップ SP SPORT MAXX 050+ スポーツ マックス サマータイヤ 205/45R17 WEDS ウェッズ Leonis レオニス VX ホイールセット 4本 17インチ 17 X 7 +45 4穴 100。

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

まず、"評価される式"が評価されます 17インチ サマータイヤ セット【適応車種:ノア(70系 3ナンバー)】WEDS レオニス グレイラ アルファ BMCミラーカット 6.5Jx17Bluearth エース AE50 215/50R17。
このときエラーが発生したら、catchに飛びます。 なにもエラーが起きなかったらパターンマッチングとガードで任意の処理を行います。
この処理の最中にエラーが起きてもcatchに飛びます。 なにもエラーが起きなかったら通常通りに処理が行われます。

afterキーワードがあれば、通常処理が終わった後に afterキーワード内の処理を行ってから呼び出し元に帰ります。
afterキーワードがなかったならば、case文と全く同じ動作となります 【代引不可】Clazzio(クラッツィオ):シートカバー(エアー)(ブラック) ホンダ フリード/フリード ハイブリッド GB系 6人乗り EH-0440。

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

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

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

165/65R15 15インチ 4本 軽量設計! +45 WM01 ダンロップ スタッドレス 01 ダンロップ G-SPEED ホイールセット DUNLOP HotStuff G-03 ウィンターマックス 2018年製造品 ブラック MAXX 4穴 WINTER 100 15 X 4.5 在庫 スタッドレスタイヤ 4穴

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

throw/1
普通の例外として、例外を投げる時に使用する。
この例外を投げられる対象は無視する(自分の上位にまかせる)か、
例外処理をすることが望まれる TOYO(トーヨー) サマータイヤ 夏用 2本セット 235/30R20 PROXES T1 Sport 235/30R20 88Y ●タイヤ2本セット●。
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)や、エラーが投げられたりしています。

DUNLOP ダンロップ WINTER MAXX 01 ウィンターマックス WM01 2018年製造品 在庫 スタッドレス スタッドレスタイヤ 165/65R15 HotStuff 軽量設計! G-SPEED G-03 ブラック ホイールセット 4本 15インチ 15 X 4.5 +45 4穴 100

【ブレンボ】ブレーキパッド AUDI A4 (B7) (車台?8E_5_400001→) [ 8EBFB ][ 06/07~08/03 ][ FRONT ] 【 レッド 《グレード》1.8T (FF) 】, M.I.C ジューク ダイヤキルトレザーピラー 6P ライトグリーン, zoom/ズーム ダウンサス ダウンフォース プリメーラ HNP11, TOYOTIRES トーヨー ナノエナジー3プラス NANOENERGY3plus サマータイヤ 185/65R15 BLEST BAHNS TECH Jizelis FVP ホイールセット 4本 15インチ 15 X 6 +43 5穴 100, データシステム ビルトIN TV-KIT NTV384B-B ニッサン用 【送料無料】非常快段膝サポーター 2枚 膝のぐらつきを固定して温めるチタンサポーター, 【全品共通20%クーポンあり】ちゅらら リバイタルクリーム(2個セット) 【正規品】, 医療用ウイッグTOKYOタッチのお嬢様風・ウィッグ(やや栗毛で顔が明るく見える)医療用フルウィッグ「Mサイズ(頭周り55.5~56.5cm) ブラシ付き」【ウィッグ】 医療用 ウィッグ 医療用 ウィッグ 医療用 ウィッグ, ポイント10倍★10日22:00~23:59まで!シセイドウ 資生堂 クレ・ド・ポー ボーテ cle de peau BEAUTE セラムエクレルシサンコール 100mL 美容液, 【3000円offクーポン(要獲得) 月曜日まで配布中】 李氏の庭 EDT・SP 100ml 【エルメス】【香水 フレグランス】【ユニセックス・男女共用】【李氏の庭 】【HERMES LE JARDIN DE MONSIEUR LI EAU DE TOILETTE SPRAY】 【TUFREQ タフレック】 CF425C トラック用キャリア Cシリーズ マツダ/タイタン用 4本脚 {CF425C[9980]}

DUNLOP ダンロップ WINTER MAXX 01 ウィンターマックス WM01 2018年製造品 在庫 スタッドレス スタッドレスタイヤ 165/65R15 HotStuff 軽量設計! G-SPEED G-03 ブラック ホイールセット 4本 15インチ 15 X 4.5 +45 4穴 100:【送料無料】 215/45R17 17インチ WORK ワーク エモーション D9R 7J 7.00-17 ROADCLAW ロードクロウ RH660(限定) サマータイヤ ホイール4本セット AVCO (アブコ) ストラットバー OS フェアレディZ S30 (後付キャブ車) フロント用

DUNLOP ダンロップ WINTER MAXX 01 ウィンターマックス WM01 2018年製造品 在庫 スタッドレス スタッドレスタイヤ 165/65R15 HotStuff 軽量設計! G-SPEED G-03 ブラック ホイールセット 4本 15インチ 15 X 4.5 +45 4穴 100.スタッドレス タイヤ BS ブリヂストン 18インチ 2本 235/45R18 Q ブリザック VRX2 スタットレスタイヤ チューブレスタイプ PXR01305 BRIDGESTONE BLIZZAK VRX2 KENDA ICETEC NEO KR36 2018年製 スタッドレス スタッドレスタイヤ 215/45R17 ブリヂストン BALMINUM S5 ホイールセット 4本 17 X 7 +45 5穴 114.3

CRIMSON(クリムソン) CLUB LINEA L368 KING LABEL (クラブリネア L368 キングレーベル) 22インチ 12.5J PCD:130 穴数:5 inset:36 DISK TYPE:HIGH カラー:シルバーポリッシュ [ホイール1本単位]/H ボルボ XC60用 タイヤ銘柄: ダンロップ WINTER MAXX SJ8 タイヤサイズ: 235/60R18 ホイール: アルミホィール スタッドレスタイヤ&ホイール4本セット【18インチ】

何も投げられなかったら、
"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を使いましょう。

【イベント開催中!】 Drag Specialties ドラッグスペシャリティーズ フットペグ・ステップ・フロアボード フロアボード パス91-17 FLT 【FOOT BRD PASS 91-17 FLT [1621-0463]】
Erlang World TOP
サイトマップ
本家マニュアルの和訳

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

はじめてのErlang【送料無料】 225/65R17 17インチ WORK ワーク M.C.O RACING タイプCS 7J 7.00-17 DUNLOP ダンロップ グラントレック PT3 サマータイヤ ホイール4本セット
Erlangに触ってみる
Erlangの変数メーン レフト の パツド [一式] ■ 『図の略番 64330D のみ』 スバル純正部品 インプレッサ 適合年式[平成23年09月~next]『品番』 64330FJ010 ^j57^
パターンマッチング
関数とBIF
Erlangシェルのコマンド

データタイプ
アトム(Atom)
タプル(Tuple)
リスト(List)
BIF listsモジュール
文字列、標準出力【20 アルファード アヴァンツァーレ】アルファード 20系 スーパーホワイトLEDルームライトセット
レコード(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で買う。

DUNLOP ダンロップ WINTER MAXX 01 ウィンターマックス WM01 2018年製造品 在庫 スタッドレス スタッドレスタイヤ 165/65R15 HotStuff 軽量設計! G-SPEED G-03 ブラック ホイールセット 4本 15インチ 15 X 4.5 +45 4穴 100


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