- 【JavaScript】スクリプト バトルロワイヤル53【php,py,pl,rb】 [無断転載禁止]©2ch.net
375 :デフォルトの名無しさん[sage]:2016/02/20(土) 04:38:36.03 ID:v2eSHxb5 - >>372
例外は想定外の自体が起きたときに使うもの。 そういうときに使うものではない。 ただしこういう書き方ならOK function getInputData() { var data = prompt() if (data == null) { throw "未入力" } (function(){ try { getInputData() } catch(e) { alert( e.message + 'によるエラー終了。'); } })()
| - 【JavaScript】スクリプト バトルロワイヤル53【php,py,pl,rb】 [無断転載禁止]©2ch.net
376 :デフォルトの名無しさん[sage]:2016/02/20(土) 04:43:57.66 ID:v2eSHxb5 - 途中で書き込んじまった
>>372 例外は想定外の自体が起きたときに使うもの。 そういうときに使うものではない。 ただしこういう書き方ならOK function getInputData() { var data = prompt() if (data == null) { throw "未入力" } return data } (function(){ try { var data = getInputData() } catch(e) { alert( e.message + 'によるエラー終了。'); } })() 関数にラップしただけのようだが何が違うのかというと、関数名が違う。 getInputDataは入力データを返す関数だ。 だから入力データを 必ず 返すのだ。想定外の事態が起きない限り。 想定外の事態かどうかは関数の仕様で決まるし、その仕様が想像できるような関数名にしないといけない。 promptは「文字入力ダイアログを表示する」というものだ。 表示できない何かが起きれば(例えばメモリ不足等)例外になるが、表示できる以上例外になってはいけない。
| - 【JavaScript】スクリプト バトルロワイヤル53【php,py,pl,rb】 [無断転載禁止]©2ch.net
377 :デフォルトの名無しさん[sage]:2016/02/20(土) 04:49:59.54 ID:v2eSHxb5 - >>372
> throwだとgotoのように使えますが、gotoのように使ってしまってもいいのでしょうか? throwをgotoの用に使うのは不可能だ。 gotoがだめというのは、ループの外から中にジャンプしたり 脈絡なくどこにでもジャンプできるからだ。 goto禁止と言われたのは過去のことで、今は悪いgotoの使い方がだめだと言われている。 C言語でも悪くないgotoの使い方は許容されているぐらいだ。 gotoという名前で良いか悪いかが決まるのではなく、その動きで決まる。 throwはgotoの良い使い方の動きしかできない。 だからgotoの悪い使い方のように使うことは不可能。 ただし>>372は別の理由(>>376)でだめな使い方だ。
| - 【JavaScript】スクリプト バトルロワイヤル53【php,py,pl,rb】 [無断転載禁止]©2ch.net
379 :デフォルトの名無しさん[sage]:2016/02/20(土) 06:02:50.67 ID:v2eSHxb5 - >>378
リーダブルコード読んでね。 名前つけるのは重要なことだから。
| - 【JavaScript】スクリプト バトルロワイヤル53【php,py,pl,rb】 [無断転載禁止]©2ch.net
381 :デフォルトの名無しさん[sage]:2016/02/20(土) 09:48:56.82 ID:v2eSHxb5 - >>372
理由書かないと当然信じられないよねw
|
|