◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

例外を正しく使えないプログラマ多いね。 その7->画像>5枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/prog/1306646249/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1仕様書無しさん
2011/05/29(日) 14:17:29.97
例外にまつわる内容であれば、不満でもネタでも主張でもご自由に。

@throws Threadが100を超えましたException
   スレッドが埋まってしまった場合に送出されます。
   >>980 を超えたら新しいスレを準備してください。

@see 前スレ
   例外を正しく使えないプログラマ多いね。 その6
   http://hibari.2ch.net/test/read.cgi/prog/1298059471/
2仕様書無しさん
2011/05/29(日) 14:46:27.66
>>1
Java前提にすんのやめろよ。
3仕様書無しさん
2011/05/29(日) 14:58:56.80
むしろ例外の扱いが微妙なC++のほうが話題多そう。
4仕様書無しさん
2011/05/29(日) 15:00:57.36
javadoc形式のタグは他言語でも似たような形式で流用されてるの多いしJava前提ってわけじゃなくね
他の書式はXMLドキュメントくらいしか知らんけど

javadocといえば、@throws タグで例外の説明んとこに
「例外を発生させます。」とか「例外が発生した場合。」
とか書く奴が結構多いんだが、これも正しく使えない奴の所業だよな

全く持って説明になってないから、結局何が原因で例外投げるのかがわからないっていう…
勘弁して欲しいわ
5仕様書無しさん
2011/05/29(日) 15:02:57.48
まともなコードヒントが出ない場合、発生する例外がわかりにくくて手間かかるわ
6仕様書無しさん
2011/05/29(日) 19:34:21.83
javadocはもう一段進化するべきだな。
引数とコメントの両方に同じ名前を二度書かせるな。

/**
* Validates a chess move.
* @author John Doe
* @param theFromFile File of piece being moved
* @param theFromRank Rank of piece being moved
* @param theToFile File of destination square
* @param theToRank Rank of destination square
* @return true if a valid chess move or false if invalid
*/
boolean isValidMove(int theFromFile, int theFromRank, int theToFile, int theToRank)




boolean isValidMove    /** Validates a chess move. */
(
    int theFromFile  /** theFromFile File of piece being moved */,
    int theFromRank /** theFromRank Rank of piece being moved */,
    int theToFile   /** File of destination square */,
    int theToRank  /** Rank of destination square*/
) /** true if a valid chess move or false if invalid */
{
}

ここからドキュメントを生成できるようにしろ。
ちょっと冗長になるだろうが、/** */じゃなくてアノテーションでもいいぞ
7仕様書無しさん
2011/05/29(日) 19:45:01.86
/**
* Validates a chess move.
* @author John Doe
* @param int theFromFile File of piece being moved
* @param int theFromRank Rank of piece being moved
* @param int theToFile File of destination square
* @param int theToRank Rank of destination square
* @return boolean true if a valid chess move or false if invalid
*/
isValidMove {
}

逆にコメントだけあればよくないか?
8仕様書無しさん
2011/05/29(日) 23:08:54.75
自動生成で事足りるし、そこまで手間だとは思わんな
しいて言うなら引数名変えるとき追従して欲しいってくらい
コメントの拡張はあくまでもコメント、コードはコードでわけてたほうが、
なんだかんだで見やすい気がするわ。つか、スレチだけどなw

例外へのドキュメントコメントは、まともにかけてる奴殆どいねーわなぁ
それ以外のですら省略されがちだったりするし。酷いとこはほんと酷い(´・ω・`)
9仕様書無しさん
2011/05/30(月) 01:06:09.19
つか元々言語とは別もんの機能なんだから、
IDE辺りがコメントの同期をサポートするのが筋だわな。
言語に依存関係に無いはずの別システムのサポート組み込むなんて
ガラパゴス電話の失敗と同じ。
10仕様書無しさん
2011/05/30(月) 01:24:34.00
> 言語に依存関係に無いはずの
いや、コメントは依存関係ありまくりだろw
11仕様書無しさん
2011/05/30(月) 01:57:31.16
 コメントの内容は依存したらいけないだろ。
TCPのデータ領域をTCP階層で監視するようなもんだぞ。
もしjavadoc以外の高性能なツールがでてもjavadocへの
言語サポートが干渉してJavaではそのツールを使えなくなる。
javadocの内容をコメントから外してアノテーションのプラグマとして管理するなら別だろうけど。
12仕様書無しさん
2011/05/30(月) 02:06:01.57
連動も面倒もどうでもいいから
発生する例外の詳細くらいはちゃんと書いておいてください><
13仕様書無しさん
2011/05/30(月) 07:15:12.96
>>11
>コメントの内容は依存したらいけないだろ。
本来そうなんだけど、PostScriptってページ記述言語が有ってじゃな…

>TCPのデータ領域をTCP階層で監視するようなもんだぞ。
FTP...
IPv6に成ったら、FTPは撲滅して、scpかbit torrentに移行すべきだな。
14仕様書無しさん
2011/06/04(土) 00:27:22.12
>>9
どんな古いIDE使ってるんだw
時代遅れにも程があるぞ
15仕様書無しさん
2011/06/04(土) 00:51:20.34
>>14
コメントを変えると同時に引数名が変わったり、
引数が削除されるIDEがあるのか最近は凄いな。
16仕様書無しさん
2011/06/04(土) 01:15:13.81
コードで表現できてるのを、コメントで二度書ききなきゃならないコードを、プロは書かない。DRYに反する。素人の糞コード。
コメントで言い訳書かなきゃならんコードをプロは書かない。それを設計とコードで表現する。

クライアントへの契約、を表現するドキュメンテーションコメントのこと言ってるなら、それはIDEがリファクタリングで連動して変換する。手作業の出番なんかない。

めんどくさい手作業をしにゃならん、と感じる状況を手作業でせっせっと勤勉にやってる時点で石器時代の土人。どんだけゆるい思想やプライドで職業ついてんだ、
発想の根本がこの業界にむいてない。
17仕様書無しさん
2011/06/04(土) 01:50:25.75
>>16
うん。だから>>6-7のように
コメントとコードが一体になる方がいいと言ってるわけだ。
18仕様書無しさん
2011/06/04(土) 07:11:58.61
IDE好きはJava土方と相場は決まってる
19仕様書無しさん
2011/06/04(土) 11:17:10.25
>>17
>>6-7は3つの点でピントがずれてる

まず1点目

> * @return true if a valid chess move or false if invalid
> boolean isValidMove(int theFromFile, int theFromRank, int theToFile, int theToRank)

何したいコードかよくわからんが、仮にそのコメントで意味が通じる、と
そう仮定するなら、メソッド名をisValidChessMoveと書けばいい。
命名センスがなく、うすうすその自覚があるから、コメントで言い訳したくなるんだろ?
変数名も同様。
7に至っては本末転倒。コードで充分、が結論になるようにかけばいい。

そして2点目
tell, don't askだろ。このコードのクライアントはvalidか尋ねてどーすんの?っていう。
設計がへぼいから、いまいち何したいかわからんコードを書くことになる。
だから、コメントで補わんとにピンとこないだろうという感覚で、
コメントへと逃げたくなるんだろ。

そして3点目。
スレタイの「例外」に全く関係ない。
20仕様書無しさん
2011/06/04(土) 11:43:56.74
コメントに「何をするコードか」ばかり書いちゃう奴は修行が足らん
そんなのは命名センスや設計センスがしっかりしていれば、最小限で済む。

それよりコメントには「なぜそのコードが必要か」に重点が置かれていないと意味がない。
最悪「何をするコードか」はコード読めばわかるのでわざわざコメントにかかんで良い。
21仕様書無しさん
2011/06/04(土) 11:49:39.33
何をしてるのかが分からないコードの多いこと
22仕様書無しさん
2011/06/05(日) 01:12:31.83
>>19

お前はピントがズレていると言ったが、
本当にピントがズレているのはお前の方だ。

コードの中身に文句をつけてどうする。
それはあくまでサンプルであってコードに意味はない。

別にコードの内容を指摘されて悔しいから言っているわけじゃないぞ。

なぜならそのコードはwikipediaから拝借したコードだからだ。
http://ja.wikipedia.org/wiki/Javadoc
23仕様書無しさん
2011/06/05(日) 02:02:18.24
コメントというか、関数名の頭に描くべきものは、
例えばman sprintfをして表示されるようなものだ。

つまり、関数の引数の説明とか、
戻り値とか、そういう言うものを書くべきだ。
関数の頭にね。
24仕様書無しさん
2011/06/05(日) 02:06:38.87
引用元がどこだろーと、下手なコードが下手なことに変わりはないなw

コード批判はしてるかもしれんが、より本質的には発想批判だろ。
>>6の思考は、同じ名前二度書かせるな→まとめて書いちゃえ
というのが中途半端なんだよ。
コメントなくても通じるコード書けば十分だろ?っていう指摘。

doclet捨ててなおAPIドキュメント作りたいんなら、わかりやすいコードだけ書いて
リフレクションでAPI生成してろよ、
って普通思うんじゃねーの。
無駄だって問題提起しながら、そこで出した解決策がこれまた無駄だから揶揄されてるんだろ。
25仕様書無しさん
2011/06/05(日) 02:13:46.31
> コメントなくても通じるコード書けば十分だろ?っていう指摘。

コードはコメントがなくても通じるかもしれんが、
引数はコメントがなければわからないぞ。

お前は経験がない。知識だけでものを行っとる。

26仕様書無しさん
2011/06/05(日) 02:15:25.48
特に戻り値は型しか書いてないから、
名前で意味がわかるなんて不可能だな。
27仕様書無しさん
2011/06/05(日) 02:22:10.58
それは、名前の付け方が悪いんでねーの?
ってこと。
コメントで書く説明を、書かなくていいよーな引き数名にすれば済むでしょ。
そーいう発想で書いてみ?
キチンとしたコードが書ければ、「おいおいコードに書いてあるだろ?」って
コメント書く時間が無駄に感じるから。

で、コメントにはコードの説明なんかアホらしくて時間の無駄だな、ってのがスタートラインだ。
当然、コメントにはもっと別のことを、書く。
28仕様書無しさん
2011/06/05(日) 02:22:27.51
プログラマに平和はないな
29仕様書無しさん
2011/06/05(日) 02:23:28.81
コードを読めば分かるというのは、
逆に言えば、コメントがあればすぐに分かることが
コードを読まないとわならないってことだ。

コードを読む時間が長くなるのなら、
コメントを付けるほうがいい
30仕様書無しさん
2011/06/05(日) 02:24:07.18
>>26
それはプリミティブで返すからだろ。
エリックエバンスの本とかにも分かりやすい説明あるぞ
31仕様書無しさん
2011/06/05(日) 02:25:45.74
>>29
違うだろ、コードの使用者の感心ごとは、コードの中身じゃない。契約だよ。
中身なんか読まずに済ませたい。
読む必要がないよーに、シグニチャを設計するんだよ。
それが良いコード。
32仕様書無しさん
2011/06/05(日) 02:25:55.45
>>27
> コメントで書く説明を、書かなくていいよーな引き数名にすれば済むでしょ。
> そーいう発想で書いてみ?

じゃあお前はsprintfという関数の引数として
何が使えるかを、どうやって引数名に含めるんだ?
33仕様書無しさん
2011/06/05(日) 02:33:27.64
double pow(double x, double y)

多分こんな定義に文句をつけて、xとかyとか使うな、 x の y 乗なのか
y の x 乗なのか、わからないだろ。関数の引数名はもっと長く書けとか
的外れな文句を付けてるようなレベルの人だろうな。


ドキュメント読まないで、引数の名前で推測して
コーディングするやつにまともなコードは書けない。

世間で言われている、「コードの内容を示すコメントを書くな」というのは
i++; // iを一増やす
のようなコメント一文 と コード一文 が完全に対応している場合の話だ。
世間で言われていることを鵜呑みにして、本質をちゃんと捉えてない。
34仕様書無しさん
2011/06/05(日) 02:35:07.58
つか、関数にする理由は、
長いコードを読まなくて済むようにするのが目的なので
コードを読めば分かるというのは、
関数そのものを否定しているのと一緒。
35仕様書無しさん
2011/06/05(日) 02:39:33.61
>>32
先に白状しとくと、俺はC使いではないんで、妄想込みだから脳内保管してくれ。

推測するにsprintfは、
フォーマットとかメッセージを例えば渡すんだろ?
だったら、型抜きで書くなら
sprintf(message, format)
あたりだろ。
messageの型はobjectなのか?各型ごとにオーバーロードしてるのか?その辺りのニュアンスはC使いじゃないんでよーわからん。言語特性にあわせてよろしく定義されてるんだろ。
戻りはvoidあたりか?

で、format辺りは文字列でやってんだっけ?そーすると渋々ドキュメンテーションコメント書く系統の設計になりそうだなこりゃ。
ま、こりゃコメント書かんとダメだな、ちっ、っていう例だと思う。
36仕様書無しさん
2011/06/05(日) 02:52:33.55
>>33
なんか怒らせたっぽいか?すまんな。
だが現場の経験から話してるぞ。
ドキュメンテーションコメント見ながら、コード書く奴がいるのか?を冷静に思い出してみてくれ。
言語そのものといっていい組み込み関数だかAPIだかライブラリの話じゃないぞ?

おまいやおまいの同僚が、昨日や今日書いた、あるいは今さっき修正してコミットしたての、そのコードをだ、
自分があるいはとなりの席の奴が使うとして
ドキュメンテーションコメントを確認して使うのか?それは本当かい?
37仕様書無しさん
2011/06/05(日) 02:53:57.64
開発プロセス次第かもしれんが、スクラッチ書いて、顧客に見せてフィードバックもらって、設計改善して、、
って出荷できる状態を短期に確保しながら動作して使えるコードを書き続ける現場でさ、
コメントとコードとで重複した情報なんか残してたら、修正速度の足かせにしかならんよ。
コメントとコードなんて乖離したらノイズだしな。

だったら、コードだけで伝わるようにしよーぜっ
てなると思うんだが。おもいらの現場は違うのか?
38仕様書無しさん
2011/06/05(日) 02:54:56.69
コードの内容を素早く把握できるように
コメントを書いておこうぜってなるのが普通
39仕様書無しさん
2011/06/05(日) 02:58:44.22
>>35
引数の制約もコード見て調べるんか?
例えばベジェ曲線を計算するメソッドが有ったとして
同一座標が重なってはいけないという制約があるとする。
それをコメントで一言
//頂点が重複する場合は例外が発生する
と書けばいいものを、
反復で変化する値を追い分岐の変化を追って
例外に至る原因となる引数を特定するのか。
40仕様書無しさん
2011/06/05(日) 03:01:16.90
>>34
x コードを読めばわかる
o シグニチャ見ればわかる

だな。
コードコード言いすぎて一つの語を複数の意味で書きちらしたおれのミス。
複雑さを隠蔽するために書くわけだからコード本体を使用者に読ませるつもりは当然ないよ。
41仕様書無しさん
2011/06/05(日) 03:01:48.56
「頂点が重複する場合は例外が発生するベジェ曲線を計算する関数」って
意味を表す英語の名前にしておけば良い。
42仕様書無しさん
2011/06/05(日) 03:19:49.38
>>39
その制約を、コードのクライアントが知るべきか?その例外をクライアントが処理すべきかどうか、あたりで変えるかなあ。

つまりバグでしよ?正しいコードじゃおこんねーよ、だったら集約例外でログ吐いとこー方針でAPIには含めない。
業務仕様でしょ?だったらAPIに含める。APIへの含め方は、例外で表現するか、戻りの型?クラス?列挙型?で表現するかは、言語特性次第だな。

実運用上はコードでの表現を第一に考えて「うわーギブアップ!今の俺の実力じゃコ(現実的な時間では)コードで表現出来んわ」となったら、ションボリしながらコメントで言い訳する。で自分にがっかりするw
43仕様書無しさん
2011/06/05(日) 03:21:04.64
そうまでして、コメントをスリムにコードでこそ語ろうぜ!という方針の意図は、DRY原則はいうまでもなく、
本当に気をつけて欲しいこと、コードでは表現出来ない設計背景、判断経緯、確実に留意すべき重大な意図が、どーでもいいコメントたちに埋れてしまわないよーに、だよ。

危険な匂いのするコードには、コメントが書かれてる、それもタップリと。
だから読み落としも防げる。そんな感じ。
44仕様書無しさん
2011/06/05(日) 04:18:28.41
>>42
ゼロ除算と同程度の話なんだけどな。普通そんな座標は入れないし。
メソッドを呼び出す側としては当然知っておくべき制約。
普通ゼロ除算をしちゃいけないと説明されるから値を渡す側はみんな割る数に0を
渡さないよう気をつけるだろそれと同じ。
45仕様書無しさん
2011/06/05(日) 04:19:54.44
で、どちらにしろコメントが不要になることはなく、

コメント書くならば、一箇所だけに書けばいいわけで
コメントとコードが分かれていると
同期を取らないといけなくなるから
一つにしろというのが>>6-7なわけだ。

あ、コードの中身はwikipediaの
JavaDocからの引用だからね

46仕様書無しさん
2011/06/05(日) 04:21:00.15
0で割ったら無限大になる
ライブラリだってあるだろうさ。
47仕様書無しさん
2011/06/05(日) 04:26:24.03
>>44
計算によっては1を渡したら0除算になる場合だってあるだろうさ。
そのことを知らせるにはコメントに書くしか無い。

コード見たって、バグかも知れないと思うだろ。
48仕様書無しさん
2011/06/05(日) 05:44:10.39
>>47
すまんコメントが必要だとしめるつもりだったのに書き忘れた。
49仕様書無しさん
2011/06/05(日) 10:48:21.66
ここまで例外と無関係な雑談。
50仕様書無しさん
2011/06/05(日) 12:08:10.42
なんか勘違いしてる人がいるようだが、別にコードで全てを語ろうなんて言ってる人はいなくて
その関数が何をする関数なのかは関数名でほとんど解るようにするのがスマートという話だろ。
51仕様書無しさん
2011/06/05(日) 12:11:14.09
そして、関数やクラスを作る人の力量は、
それを使う人が気にしなきゃいけないことがどれだけシンプルに収まってるか、に現れるので
コメントをダラダラ書いている時点で何かが間違っていると感じないといけない。

関数の(外向きの)コメントなんて、ヘッダの宣言の横に1行あるかないかで十分だと思う。
52仕様書無しさん
2011/06/05(日) 12:27:14.03
で、関数名で分かるようにしろと言ってるだけで、
結局そもそもの問題。関数の引数とそのコメントの二箇所に
同じ名前が書いてあるのは無駄だから統一しろという
>>6-7の話をすり替えてるだけなわけだ。
53仕様書無しさん
2011/06/05(日) 12:31:34.92
引き続き例外と関係ない話。
54仕様書無しさん
2011/06/05(日) 17:11:00.66
>>48
コードとコメントでコメント信じるのはアホだ
コメントはあれだよ、自転車の補助輪みたいなもの。運痴のやつが、親に支えてもらう代わりに、転ばないよーにつけてる感じ?
55仕様書無しさん
2011/06/05(日) 17:32:35.08
@throws RedundantCommentException
コメントがコード内容を繰り返すだけで冗長です。命名や設計を改善してコードの意図をシグニチャだけで表現出来るよう成長しましょう。
56仕様書無しさん
2011/06/05(日) 17:40:17.24
@throws ExcessiveCommentException
コード総量に占めるコメントが大杉ます。読み手のことを考えることなく、自分が書きたいこと書けることを書き散らすことで、何が重要で何が些細かが伝わりにくい状況です。古い習慣を疑いコメント設計を行いましょう。
57仕様書無しさん
2011/06/05(日) 17:42:43.81
@throws MisleadCommentException
コードとコメントが乖離しています。コメントを書くことが目的か手段かを混同し考えなしに機械作業を行うと発生する現象です。身の丈にあったコード規約を採用し、コメントがノイズにならないようにすべきです。
58仕様書無しさん
2011/06/05(日) 18:11:03.98
>>55-57

なにwikipediaにのってるサンプルコードに
文句付けてるんだ? 恥ずかしくないのか?
59仕様書無しさん
2011/06/05(日) 18:21:19.98
@throws Wikipedia厨Exception
大好きなウィキペディアが批判されたと勘違いして感情的になる人間を検知しました。論理的な内容に目を向けるようにしましょう。
@see >>58
60仕様書無しさん
2011/06/05(日) 18:47:41.49
痛いって…似たようなコメント連投するな。
61仕様書無しさん
2011/06/05(日) 19:01:21.46
class 58=60自己弁護Exception extends InvalidAttitudeException {}
62仕様書無しさん
2011/06/05(日) 19:49:24.43
発狂すんなよ
63仕様書無しさん
2011/06/05(日) 20:07:48.23
掲示板 2ch = Repository.Find("例外を正しく使えない...");
try{
2ch.read();
} catch(雑談Exception e){
2ch.warn("引き続き例外と関係ない話", e);
}catch(Wikipedia厨Exception e){
2ch.warn("痛いって…似たようなコメント連投するな。", e);
} catch(発狂Exception e){
2ch.warn("発狂すんなよ", e);
}
64仕様書無しさん
2011/06/09(木) 13:55:37.20
( ^ω^)チュッチュ

コメントを正しく書けないプログラマ多いね。 REM 1
http://hibari.2ch.net/test/read.cgi/prog/1306646248/
65仕様書無しさん
2011/06/28(火) 01:02:28.79
そもそも、例外が必要なのって楽したいからだよね?面倒くさいチェック処理とか省きたいから。
なんか間違ってるか?

# そんな俺は例外書くことは基本的にない。
66仕様書無しさん
2011/06/28(火) 01:27:24.09
例外は用途であって機能ではないけどな。
try-catch以外にも、GetLastErrorやらerrnoといったライブラリ、
割り込み命令で例外を処理してるし。
67仕様書無しさん
2011/06/28(火) 07:55:40.01
>>66
> GetLastErrorやらerrnoといったライブラリ、
> 割り込み命令で例外を処理してるし。

うん、だからそういうのを一箇所にまとめられる→楽したい ってことなんでしょ?
って思ってさ。
例外処理本来の用途って意味だと、例外が発生してもプログラム三原則に沿って
動き続けるためだろうなーっとは思ってるんだけどさ。
68仕様書無しさん
2011/06/28(火) 21:47:24.94
楽をしたいってのは間違ってるぞ。

楽に例外処理をしたい。

こっちが正解。
69仕様書無しさん
2011/06/28(火) 22:15:04.97
>>68
fmfm

なるほど、それはそうだね
70仕様書無しさん
2011/06/28(火) 22:22:32.83
>>67
try-catchの事言ってんなら大して、例外処理箇所は変わらんぞ。

例えば、文字列を数値に変えるInteger.valueOfがあるが、
このメソッドは、値が不正なとき例外を出す。
しかし、この例外には何が原因かは情報がない。
原因が何かは、Integer.valueOfに間違った値を渡した
呼び出し元のメソッドしかしらんからな。

だから、基本的にifで戻り値調べて、どの値が間違っています
って書くのと例外処理の箇所は変わらん。

楽になるとすれば、下層のメソッドから上層のメソッドへエラーを
伝えるだけの処理が省けることと、異常のあったループなんかから
抜け出しやすい事。

まぁ、そもそもtry-catchの発端は、C++でエラー情報を戻り値で
伝えられない関数を補助するためだから。
71仕様書無しさん
2011/06/28(火) 22:30:18.92
> このメソッドは、値が不正なとき例外を出す。
> しかし、この例外には何が原因かは情報がない。

あるぞ?

例外:
NumberFormatException - 文字列が解析可能な整数型を含まない場合


文字列が解析可能な整数型を含まないという情報がある。
72仕様書無しさん
2011/06/28(火) 22:36:23.09
>>70
そもそも入力チェックに例外を使っているのが間違い。

例外はその名のとおり例外。
通常の処理の流れでありえない=途中で中断すべき場合に使う物

どの値が間違っているか調べることなんかに
使うべきものじゃない。
73仕様書無しさん
2011/06/28(火) 22:51:47.32
>>71
原因が何かってのは、幅に文字が入ってるとか、
高さに文字が入ってるとかだぞ解ってるとは思うけど。

>>72
何から入力させてんの?まさかコンソールから値を入力する事を前提にしてるわけじゃないよね。
GUIならさ、普通数値以外を入力できなくさせることができる訳じゃん。ここで数値チェックなんてそもそも
必要ないわけよ。じゃあ他に数値が入っているべき場所に文字列が入ってる状況は?

そうなるとファイルやら通信データになるわけだ。当然データ構造のパースが走る。
パース処理は浅くはない、パース途中で値が無効だと解った時のコールスタックと、
パースが崩れた原因を知っているコールスタックは距離が離れてる。
そういう場合、いちいち例外投げない数値チェックをするのは、処理が2重になる上
コールスタックのif連鎖がある分無駄でしかないんだよ。
74仕様書無しさん
2011/06/28(火) 22:54:20.31
>>73
例外っての出してもらうもんじゃないよ。


自分がわかるんだろ?
分かるやつが、例外の中にその情報を入れて
投げるもんだ。

その結果「例外には詳細なエラー情報が含まれる」ことになる。

やっぱり例外の使い方分かってないよ。
75仕様書無しさん
2011/06/28(火) 22:59:02.14
>>74
それはそうだよ。でもそんな話はしてない。
それは、まず例外を受け取ってからの話だ。
76uy ◆hi.ht/Isu2
2011/06/29(水) 05:34:43.51
君たちはちょっとアセンブラレベルから一回考え直したほうがいいです
ポリもーフィズムとか、継承なんかと並んで、例外っつうのも説明されるから
初心者が陥っちゃうところなのかもね

例外なんて、ただの1メソッド扱いでいい。 使わなくたってプログラムは完成すんのに


何をどうしたいのか具体的に言ってみ?
77仕様書無しさん
2011/06/29(水) 06:20:56.28
>>72
中断するべきかどうかっていうのを起点にするならちゃんと判定しろって思うんだけど
どうなんだ?
例外処理って「なんか起きても動き続けるために」使うもんだと解釈してるんだけど。

# 発想としては、ね。そりゃ書き方次第でいろいろ使えるのは分かってる。
78仕様書無しさん
2011/06/29(水) 07:44:30.67
>>77
だから、例外の処理自体はC以前の時代からあって、
try-catch使おうが、ハンドラー使おうが、戻り値使おうが
例外処理の内容は昔と同じなんだって。
79仕様書無しさん
2011/06/29(水) 12:38:47.95
>>78
なにについて「だから」って使ってんの?
80仕様書無しさん
2011/06/29(水) 13:20:16.89
Begin Sub A
On Error GoTo Err

Exit Sub

Err:
End Sub
81仕様書無しさん
2011/06/29(水) 23:12:26.82
>>77
> 例外処理って「なんか起きても動き続けるために」使うもんだと解釈してるんだけど。

例外処理は、通常の処理とは違う異常事態が起きたことを簡潔な形で伝える物。

伝えるだけ。


伝えた後動き続けるかどうかは
アプリの仕様しだい。
82仕様書無しさん
2011/06/29(水) 23:17:45.22
それは例外処理じゃなくて例外機構だろ。
83仕様書無しさん
2011/06/30(木) 00:20:54.52
>>81
> 例外処理は、通常の処理とは違う異常事態が起きたことを簡潔な形で伝える物。

俺が「動き続ける」といったのはもちろんその「伝えた」以降の話なんだけども、
ぶっちゃけ「なんかよく分かんないことが起きましたので処理を中断して終了」
っていうのは、バッチ的な解釈なんだよね。

オンライン(リアルタイム)の場合は止まってはいけない。できればバッチの場合
でも復帰して続ける。
銀行ATMで「すいませんがなんか想定外のことが起きたんで停止します」って
話になったら業務に支障が出るわけで。

止まっても問題ない場合は止まればいいと思うよ。でもそれは例外処理の本来
の使い方ではないかなぁと思うんだよね。
84仕様書無しさん
2011/06/30(木) 00:38:17.68
まず、throw try catchの概念を捨てて考えたら?
例外機構のない言語で同じ事態に遭遇したらどうするか。
それが基本的な答えだよ。その答えのうち面倒な部分を例外機構が補助してくれる。
例外処理にどんな例外機構を使ってるかは重要じゃない。
85仕様書無しさん
2011/06/30(木) 00:42:11.79
>>84
その概念を捨てて例外について騙ろうって言うのか?
お前、大丈夫か?
86仕様書無しさん
2011/06/30(木) 00:54:13.02
>>83
想定外のことが起こったら、停止するしかない。
想定外のこと以外でも例外発生すると面倒なんだけどな。
87仕様書無しさん
2011/06/30(木) 01:04:03.92
例外を使おうがそれ以外を使おうが
想定外のことは起きるし、その時にやりたいこともなにも変わらない。

単に例外を使えば簡単に処理がかける。
88仕様書無しさん
2011/06/30(木) 01:24:02.63
>>85
ノイマン型コンピューターには分岐と変数となんやらかんやら・・・。
Cωで書けたプログラムがFORTRANで書けないわけじゃない。
HTML5の技術を使わずjavascriptだけで3Dグラフィックスを
書くこともできない訳じゃない。こんな感じでな。
http://jsbin.com/ubiyay/3/edit#preview

アルゴリズムがチューリング完全ならどの言語にも依存しないのと同じで
例外処理だって言語に依存しないし、十分語れる。
例外情報が必要とかいうなら、staticな共用データ(共用体)に格納すれば
例外機構の無い他の言語でも用意できるし重要じゃない。
89仕様書無しさん
2011/06/30(木) 01:29:31.25
問題は、想定内の事象での例外だな。
まさにスレタイの通りではあるんだが。
90仕様書無しさん
2011/06/30(木) 01:52:12.04
>>88
いや残念ながら俺は例外処理必須と考えてるわけではない。
初発は>>65だ。

で、まぁ例外処理だって言語に依存しないっていうのはまぁ分かるし、
十分語れるならそれをかたってくれい。
91仕様書無しさん
2011/06/30(木) 01:54:06.40
続き

ただ、俺が>>85で言いたかったのは>>1を無視してまで騙る必要がこのスレに
あるのかってこと。
92仕様書無しさん
2011/06/30(木) 09:52:26.36
この板は、相変わらずだな。

例外がCPUとOSに依存しているのをいまだ、まともに理解出来ている人間がいない。
例外はCPUの割り込み処理だと分かっているのか?
その割り込み処理を、個々のプログラムで制御を許しているのは
OSがマルチタスクだと理解できているのか?

技術者のくせに、CPUやOSの仕組みをしらない奴が多すぎ。
93仕様書無しさん
2011/06/30(木) 09:57:21.60
お前は口だけでOSを作る上で一番面倒なことは何か理解していないようでしたが?
9492
2011/06/30(木) 10:52:57.93
>>93
俺は初レスだ。
95仕様書無しさん
2011/06/30(木) 11:06:14.84
だから何。

あんたはトランジスタを、電子の動きを、半導体の作り方を理解して、コンピュータ使ってるのか?
下のレイヤを抽象化するのがエンジニアリングであって、下のレイヤを全部理解してなければ
わからない、と主張するのはバカのすることだぞ。
96仕様書無しさん
2011/06/30(木) 12:09:47.94
>>95
お前は頭悪いな。自分の文書に違和感は無いのか?

>あんたはトランジスタを、電子の動きを、半導体の作り方を理解して、コンピュータ使ってるのか?
”電子の動き”って、中学で習うだろう、義務教育を受けていれば分かることだが。
それにパッケージになっているLSI(CPU)とトランジスタを比べてどうするだ?(半導体の作り方ってw)

>下のレイヤを抽象化するのがエンジニアリングであって、下のレイヤを全部理解してなければ
>わからない、と主張するのはバカのすることだぞ。
まったく分からん、何が書きたいんだ。”下のレイヤ”・”下のレイヤ”って?OSやハードのことか?
抽象化って、理解出来ていないものを抽象化出来るのか?それはただ単に知らないだけだ。
言葉遊びならとりつくろえても技術者としては駄目だな。

それに、そもそも技術者とは抽象的なものを具象化するものだろう。

別に全部理解しろとは言ってないが例外の話なら例外ぐらいは理解して話せ。
97仕様書無しさん
2011/06/30(木) 14:57:13.85
フリップフロップ位理解したほうがいかなと、トイレで寝ながら書き込んでいる。
98仕様書無しさん
2011/06/30(木) 19:57:26.54
どこまで理解してたら例外を理解してることになんの?
99仕様書無しさん
2011/06/30(木) 22:10:00.40
>>92
それは例外実装のひとつだろ。
実装であって目的じゃないし、本質じゃない。

・例外実装の種類
 ・ハードウェア例外機構
  ・CPU例外
   ・ソフトで検知できない異常をソフトに通知する
   ・基本的に割り込み用途の極一部でしかない
 ・ソフトウェア例外機構
  ・OS例外
   ・アウトプロセスの異常を通知する
  ・ライブラリ例外
   ・結果が得られなかった事を通知する

ハードウェア例外機構 implements 例外機構;
ソフトウェア例外機構 implements 例外機構;

そもそも根底にあるのはタダの例外機構。
機構自体は、何ら例外の主体ではない。
100仕様書無しさん
2011/06/30(木) 22:36:26.49
>>99
またアホなことを。
ハードウェア例外だろうがソフトウェア例外だろうが
割り込み処理で実行しているのが分からないのか?

根本的に割り込み処理が分かってないから
そんな恥ずかしいことを堂々と書けるんだろうな。

お前の書いた例外処理をだれが処理しているんだ?
CPU以外に誰が処理してくれるんだ?

例外処理は、ノイマン型CPUなのに、なぜ急に処理の順番が変更できるんだ?

頭を使って考えろ。
101仕様書無しさん
2011/06/30(木) 22:40:31.41
ハードウェア例外とソフトウェア例外以外の
例外もあるよ。ただのジャンプで実装された例外。
102仕様書無しさん
2011/06/30(木) 22:42:30.04
例外処理ってのは、割り込み処理から復帰してから動くコードだよ。
割り込み自体は単に処理の順番を入れ替える地点だけに過ぎない。
103仕様書無しさん
2011/06/30(木) 22:46:01.70
こういうバカって幸せなんだろうなぁ。うらやましい。
104仕様書無しさん
2011/06/30(木) 22:48:04.04
> 例外処理は、ノイマン型CPUなのに、なぜ急に処理の順番が変更できるんだ?
処理の順番が変更できないと、分岐もできないだろー。
割り込みと例外の区別が付いていないのかなー?
105仕様書無しさん
2011/06/30(木) 23:02:32.55
例えばゼロ除算とかは、プロセッサの例外をトラップして処理系レベルの例外にするわけだけど、
処理系の発生させる例外はそういうものばかりじゃないからな。
たとえば、システムコールがエラーを返して終了したらIOエクセプション、とかいう処理系は
よくあるし、その実装にわざわざプロセッサ例外を起こしてそれをトラップして、なんて、
普通はやらない。

プロセッサレベルを知ってる俺様無双、って威張りたいだけのバカでしょ。
106仕様書無しさん
2011/06/30(木) 23:21:27.27
>>100
お前割り込みの意味しらねぇだろ。
割り込みっつうのは、そもそも割り込みコントローラーが能動的に
割り込み信号をCPUに送りつけ、割り込みベクタを実行させ
ポーリングを排除する。
ソフトウェア例外は、ただの分岐。全く割り込み関係ない。
jgeとかjmpとかintやスタブじゃない命令は割り込みとは言わない。
107仕様書無しさん
2011/06/30(木) 23:31:31.66
>>101-106
何を必死になっているんだ。哀れすぎるぞ。

>>101
具体的には? 言語はなんだ?

>>102
割り込み処理が発生しないと例外処理が出来ないのは納得するんだな。

割り込み処理は、誰が処理をするのか分かるか?
例外から発生した割り込み処理をプログラムが直接受け取るとでも思っているのか?
本当に割り込み処理が分かっていないんだな。

>>104
>処理の順番が変更できないと、分岐もできないだろー。
アホw 分岐はジャンプ命令で書いてあるから分岐するんだろうが、それがノイマン型だ。
トラップ部分全てにジャンプ命令が書かれているのか?
ジャンプ命令が無いのになぜ処理の順番が変わるのか考えろ。

>>105
>たとえば、システムコールがエラーを返して終了したらIOエクセプション、とかいう処理系は
>よくあるし、その実装にわざわざプロセッサ例外を起こしてそれをトラップして、なんて、
>普通はやらない。
疲れるなアホが多すぎて、じゃなぜ例外処理に処理が移動するんだ?
割り込み処理が発生するから例外処理に移動するんだろうが。
お前の書いたプログラムをアセンブラで見てみろよ。
「システムコールがエラー」で例外にジャンプする命令が書かれているか?

>>106
>ソフトウェア例外は、ただの分岐。全く割り込み関係ない。
アホw 自分が書いたプログラムも読めないのか分岐命令が書かれているか?
108仕様書無しさん
2011/06/30(木) 23:32:54.95
>>106
割り込みについてはそうなんだろうけど、ここで言ってる例外がなにを
さしてるみんなが話してるのかってことを度外視してまで続ける必要が
あるのかって部分で疑問だわ
109仕様書無しさん
2011/06/30(木) 23:40:13.81
setjmp/jongjmpで実装した例外処理とか知らないんだな、このバカは
110仕様書無しさん
2011/06/30(木) 23:43:33.44
魔法みたいな例外処理使ってるらしい...
111仕様書無しさん
2011/06/30(木) 23:46:34.33
>>109
それは例外機構じゃないだろう。
112仕様書無しさん
2011/06/30(木) 23:48:43.48
>>107
>アホw 自分が書いたプログラムも読めないのか分岐命令が書かれているか?
書かれてるけど?何が言いたい?
まぁ、その付近にはシステムコールの割り込みが存在する事もあるけど
それはシステムコール用だし関係ない話。そもそもプロセスを跨いだ例外で無い限り
割り込み命令やスタブに出くわす事もない。だいたいWindowsじゃ割り込み命令(int)の
殆どはリングプロテクトの中じゃないと使えねぇしな。基本的に目にするのはスタブの割り込みだらけ。
113仕様書無しさん
2011/06/30(木) 23:50:50.48
ソースコード上の話してるだけだから、そういう事いってもわからないんだよ
114仕様書無しさん
2011/07/01(金) 00:01:33.80
>>107は自分の書いたコードがどうコンパイルされてるか
アセンブラで確認することもしないんだろうなぁ。
115仕様書無しさん
2011/07/01(金) 00:03:01.87
>>107

ほい。G++のtry catchのランタイム実装コード。

http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-sjlj.c?rev=1.21&content-type=text/x-cvsweb-markup
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind.inc?rev=1.12&content-type=text/x-cvsweb-markup
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc%2b%2b-v3/libsupc%2b%2b/eh_alloc.cc?rev=1.13&content-type=text/x-cvsweb-markup
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc%2b%2b-v3/libsupc%2b%2b/eh_throw.cc?rev=1.11&content-type=text/x-cvsweb-markup

割り込みが存在すんのは、mallocとstd::terminate内部の呼び出しぐらい。
あとはスタック操作とか普通のライブラリのコードで書かれてる。
116仕様書無しさん
2011/07/01(金) 00:17:05.58
沈黙したな。ageてみるか。
117仕様書無しさん
2011/07/01(金) 00:22:04.89
>>112-115
まったくアセンブラも読めないのか、話にならない。
try-catchの間で、catchにジャンプするJxxxのジャンプ命令は書かれていないだろう。
どうやって例外処理が呼び出されているか考えろ。
118仕様書無しさん
2011/07/01(金) 01:04:05.77
>>115読めよ。読める知識もないのに語ってんのかアホ。
119仕様書無しさん
2011/07/01(金) 01:14:39.20
>>118
人の書いたソースより自分の書いたプログラムのアセンブラを読めよ。
すぐに分かるだろ。 読めないのか?
120仕様書無しさん
2011/07/01(金) 01:23:31.80
あのな。try,catch,throwってのは、本当に>>115の呼び出しに置き換えられてるだけなの。解る?
アセンブリ化したコード読んでも、>>115のコードの呼び出しが書いてあるだけ。
わざわざアセンブリで読む意味がない。
121仕様書無しさん
2011/07/01(金) 01:36:02.87
>>92
半年経っても理解できなかったのか。悲しいな。
http://logsoku.com/thread/hibari.2ch.net/prog/1296098340/285-

時間の無駄だから、みんなスルーして欲しいな。
122仕様書無しさん
2011/07/01(金) 02:07:40.20
>>120
まったく、なんでアセンブラを読まないのか。読めば解決するだろう。

じゃ、簡単な質問をする。
マルチタスクOSのメモリーは、OSやいろいろなプログラムが使っている。(これは理解できるだろう?)
自分の作ったプログラムでオブジェクトのメソッドを呼び出そうとする。
しかし、そのオブジェクトは不正な値が入っていたとする。(他のOSやプログラムが使っているアドレスを指している)
この時例外が発生するが、他のプログラムやOSの例外処理が動かなくて
自分のプログラムの例外処理が動くのは何故だ?
>あのな。try,catch,throwってのは、本当に>>115の呼び出しに置き換えられてるだけなの。解る?
その理屈だと、どうなる?
123仕様書無しさん
2011/07/01(金) 02:19:17.20
> しかし、そのオブジェクトは不正な値が入っていたとする。(他のOSやプログラムが使っているアドレスを指している)
> この時例外が発生するが、
例外が発生するかどうかは、OSやCPUのメモリ保護機能によって決まる。
発生するとは限らない。
馬鹿か。

> 他のプログラムやOSの例外処理が動かなくて
OSやCPUのメモリ保護機能によって、OSの例外処理が働く場合もある。
馬鹿か。

> 自分のプログラムの例外処理が動くのは何故だ?
馬鹿か。

> その理屈だと、どうなる?
>>115のアセンブラの動きが答えだろ。
124仕様書無しさん
2011/07/01(金) 02:21:49.55
>>122
構造化例外の事を言いたいのか?
普通 _set_se_translator()を呼び出し、シグナルを言語仕様のthrow文に変換するコードを渡す。
基本的にOSからシグナルとして伝えられる例外と言語が持つ例外は別物。
暗黙だろうが明示的だろうが何らかのマッピングが必要になる。
まぁ、Javaなんかはシステムレベルの例外は、ランタイムでフックしてthrowに置き換えたり、
VMでリソース監視してVMがthrowしたりするけど、割り込みとは世界が別。
125仕様書無しさん
2011/07/01(金) 02:52:47.67
釣れたね。よかったね。
これくらいでもうやめてくれない?つまんないからさ。
126仕様書無しさん
2011/07/01(金) 02:53:14.75
>>123
>例外が発生するかどうかは、OSやCPUのメモリ保護機能によって決まる。
>発生するとは限らない。
お前、自分で書いていて矛盾を感じないのか?
例外が発生するときはOSやCPUによって決まる書いているんだぞ。
意味がわからん。
127仕様書無しさん
2011/07/01(金) 03:10:23.94
>>126
中途半端に抜き出すな。

俺が言っているのは、
> しかし、そのオブジェクトは不正な値が入っていたとする。(他のOSやプログラムが使っているアドレスを指している)
> この時例外が発生するが、

つまり、他のOSやプログラムが使っているアドレスを差したときに例外が発生するかどうかの話をしている。これはOSやCPUによって違う。

たとえばulinuxやMS-DOSとかだと他のプログラムが使っているアドレスを差したとしても例外は発生しない。

なにも矛盾しているところはない。また中途半端に抜き出されたくないから、改行少なく書いてみたよw
128仕様書無しさん
2011/07/01(金) 03:23:27.07
お前ら誰がどの考えなんだ。
1.例外はOS・CPUに依存する。
2.例外はOS・CPUに依存しない。
3.OS・CPUに依存する例外と、依存しない例外がある。
129仕様書無しさん
2011/07/01(金) 03:35:07.21
× 1.例外はOS・CPUに依存する。
○ 1.他のプロセスのアドレスを参照することで発生する例外はOS・CPUに依存する。

自分の言った言葉ぐらい
責任をもて
130仕様書無しさん
2011/07/01(金) 03:49:00.61
>>127
>つまり、他のOSやプログラムが使っているアドレスを差したときに例外が発生するかどうかの話をしている。これはOSやCPUによって違う。
>たとえばulinuxやMS-DOSとかだと他のプログラムが使っているアドレスを差したとしても例外は発生しない。
だから、お前はバカなの? 
ulinuxやMS-DOSでは例外処理が発生しないのはOSによるものだろう。

>>129
お前は何が言いたいんだ? 3と言う事じゃないのか?

お前は本当に意味が分からん、上から読んで整理してからこい。
131仕様書無しさん
2011/07/01(金) 03:54:16.75
ulinuxやMS-DOSでは例外は使えないの?
132仕様書無しさん
2011/07/01(金) 03:59:38.94
わざとなのか知らないが、アドレス違反などの CPU 例外と、
Windows 構造化例外のような OS の例外と、 C++ はじめ
プログラミング言語の例外とをごっちゃにしたまま話をしたのでは
わけがわからない。
133仕様書無しさん
2011/07/01(金) 08:42:57.96
ごっちゃまぜ以前に、
すごく狭い自分の知識と視野でしか話すことができないバカが、
半年以上ずっと頑張ってるだけだから。

こんなバカが他で暴れたり仕事したりするのは社会に有害だから、
ここでしっかり構ってやんないとw
134仕様書無しさん
2011/07/01(金) 09:48:38.85
>>132
誰がごちゃ混ぜ話しているんだ?

まったく、例外はCPU、OSに依存しないと書いたかと思えば
今度はCPU、OSに依存すると書くしわけが分からん。

誰か俺の書いた>>92がどう間違っているのかを、はっきりかいてみろよ。

言っとくが一部の奴が言っている、一部言語に実装されている
擬似例外は、例外機構じゃない、擬似は擬似だ。
正式な例外みたいに言うのは間違っている。
135仕様書無しさん
2011/07/01(金) 09:51:14.16
> OSがマルチタスクだと理解できているのか?

OSがマルチタスクだと理解していることがどう例外と関係するんだか。

> 技術者のくせに、CPUやOSの仕組みをしらない奴が多すぎ。

それがどう例外と関係あるんだか。

例外の仕組みをしらないのはおまえ自身だろ。

> 言っとくが一部の奴が言っている、一部言語に実装されている
> 擬似例外は、例外機構じゃない、擬似は擬似だ。
> 正式な例外みたいに言うのは間違っている。

俺様定義を振り回したってだれもそんなもん知らんわ。
136仕様書無しさん
2011/07/01(金) 10:04:33.22
>俺様定義を振り回したってだれもそんなもん知らんわ。
一部言語にしか実装されていない擬似例外を
一般的な例外と言う方が”俺様定義”だと思うが。
137仕様書無しさん
2011/07/01(金) 10:15:56.76
>>136
で、その俺様定義を「そーですね」って言ってあげれば立ち去ってくれるの?
すっごい粘着しそうなんですけど

ここまで粘着するからには
138仕様書無しさん
2011/07/01(金) 10:37:28.14
>>135,137
まったく自分だけ、かなり的外れ事を言っているのにきずかないのか?
俺以外の奴もこう言っているぞ。(>>127,123)

>OSがマルチタスクだと理解していることがどう例外と関係するんだか。
>たとえばulinuxやMS-DOSとかだと他のプログラムが使っているアドレスを差したとしても例外は発生しない。(>>127)
Windows7とulinuxやMS-DOSの違いは?
あと、>OSやCPUのメモリ保護機能によって、OSの例外処理が働く場合もある。(>>123)
のメモリ保護機能ってどんな時に必要になる?

>> 技術者のくせに、CPUやOSの仕組みをしらない奴が多すぎ。
>それがどう例外と関係あるんだか。
>これはOSやCPUによって違う。(>>127)

お前が割り込むと、話がめちゃくちゃになる。 粘着するな。
139仕様書無しさん
2011/07/01(金) 10:38:52.93
それが目的ですからw
140仕様書無しさん
2011/07/01(金) 10:39:31.39
> 自分だけ、かなり的外れ事を言っている

おまえもなんだけどなw
一生きづかないだろうけどw
141仕様書無しさん
2011/07/01(金) 11:10:08.99
>>139
>それが目的ですからw
嘘つけ、本気で思っていたんだろうが。
それ言い訳、哀れすぎるぞ。

>>140
誤字ぐらいで揚げ足をとるか情けない。お前のも
>おまえもなんだけどなw
おまえ"も"って、自分が「的外れ」だと自覚はあるんだな。
142仕様書無しさん
2011/07/01(金) 11:15:12.37
×それ言い訳
○その言い訳
143仕様書無しさん
2011/07/01(金) 13:48:39.22
>>134
> 誰か俺の書いた>>92がどう間違っているのかを、はっきりかいてみろよ。

「例外」の定義が一般的でない俺様定義になっているので、はっきりしません。

はっきりしたいのであれば、「例外」を「CPUの例外」「OSの例外」「言語の例外」あたりに
分類して書き直してください。
144仕様書無しさん
2011/07/01(金) 13:59:39.89
「言語の例外」の話でしょ、ここでは
「CPUの例外」「OSの例外」が「言語の例外」に含まれてるから、話がややこしくなってる

「CPUの例外」「OSの例外」を除外した「言語の例外」の話だと自分的には面白くないだけどね
145仕様書無しさん
2011/07/01(金) 14:22:34.49
「自分の関わった領域における例外」じゃね?
OSとかCPU(ハード)の例外は別のモノ、つまり「自分の関わらない領域からの例外(≒割り込み)」

後者をどうやるか(回避するか)ってのは確かに面白いね。
人の行う例外入力に対する処理もそれかな? このスレとは若干というかかなりかけ離れる気がするけどさ。

だって、例外を“使う”ってタイトルからすれば命令とか機構をどう使うかって事だし、
CPUとかOSの例外をどうするかっていうと“どう処理するか”ってなるから、例外を“使う”と言う表現はちと違うね。

どっちも意義のある議論項目には違いないと思うけど。
146仕様書無しさん
2011/07/01(金) 18:17:12.63
>>136
一部OSやCPUにしか実装されていないものを「一般的な例外」と主張するのは俺様定義でしかないなw
147仕様書無しさん
2011/07/01(金) 22:19:35.90
>>144
いちいち○○の例外とかうざい。

全部例外でいい。
それで勘違いするやつが馬鹿なのだ。
148仕様書無しさん
2011/07/01(金) 22:20:46.80
「一部OSやCPUにしか実装されていないものを「一般的な例外」と主張するのは俺様定義でしかないなw 」

という定義について意義がある人はいませんか?

いないなら、この定義を一般的なものとしますよ。
149仕様書無しさん
2011/07/01(金) 22:32:20.62
つまらん。
150仕様書無しさん
2011/07/01(金) 22:34:43.03
つまらんというのも
俺俺定義ですね?
151仕様書無しさん
2011/07/01(金) 22:38:07.26
ず〜〜〜〜〜〜〜〜〜と、つまらん話が続いて.......
152仕様書無しさん
2011/07/01(金) 22:40:06.84
でも、それでもこのスレを見てしまうのです。僕は病気でしょうか?
153仕様書無しさん
2011/07/01(金) 22:41:44.55
結局>>92は何が言いたかったんだ?
「お前等バカばっか!!俺天才!!悔しがれよクズがっ」とでも言って
自尊心を満たしたかっただけなのか?まぁ、今のところそうとしか思えない発言だらけだが。

それとも、万が一かもしれんが、もしかしたら、ひたすら割り込みに拘ることによって、
何かが劇的に改善する方法論を知ってるのか。もし、そうならダラダラ押し問答するより
その貴重な方法論をとっとと語ってほしいもんだ。
154仕様書無しさん
2011/07/01(金) 22:43:47.73
とまあ一番むかついた人にレスしたのであった。
15592
2011/07/01(金) 22:59:15.09
>>143,144
お前ら当然のように分類を決めているが、だれがその分類で正しいと言ったんだ?
「CPUの例外」「OSの例外」「言語の例外」の具体的な例外は?

この例外をその分類で表してくれ。足りなければ追加してくれ。
・徐算エラー
・配列境界違反
・無効命令
・スタック例外
・一般保護例外

お前らの言っている分類ってなんだ?
156仕様書無しさん
2011/07/01(金) 23:03:22.60
IOException も知らずにこれだけ大威張りしてきたとはなw
157仕様書無しさん
2011/07/01(金) 23:04:28.21
また来た・・・。
158仕様書無しさん
2011/07/01(金) 23:05:40.73
>>155
・配列境界違反
・スタック例外

程度が知れるなw
159仕様書無しさん
2011/07/01(金) 23:08:58.03
うふふぅ
160仕様書無しさん
2011/07/01(金) 23:09:17.26
上から目線で話されても...
161仕様書無しさん
2011/07/01(金) 23:15:18.85
>>155 そんな事はどうでもいいから、どういうメリットが
ある事を言いたいのか書けよ。
162仕様書無しさん
2011/07/01(金) 23:19:34.58
OSもCPUも理解してるはずのおまえが、分類できないわけがない。
OSもCPUも理解してるってのが大嘘でした、と大声で宣言しちゃったわけだ(核火暴笑)。
163仕様書無しさん
2011/07/01(金) 23:22:35.55
> (核火暴笑)

ってなに?
164仕様書無しさん
2011/07/02(土) 00:39:15.47
若いな
165仕様書無しさん
2011/07/02(土) 02:15:20.43
>>155
0除算ひとつとってもプロセッサが例外を発生させることもあればソフトウェアが
検知して言語の例外を発生させることもあるわけで、要因に対して分類が1対1で
対応するわけでもない。

IA-32 の Divide Error をどれに分類するか、と具体的に言ってもらえれば、
それは「CPU例外」であるなどと分類を示すことができる。
166仕様書無しさん
2011/07/02(土) 02:29:53.00
「CPU例外」ってのは、バグ潰すのに便利だったんだけど
例外ってのがバグ隠し?みたいな使い方する(される)のがなんとなく
167仕様書無しさん
2011/07/02(土) 03:04:35.62
なんだ、また例外処理機構wのやつが出たのか。
こんどは32bitだとか8086より先とか言わんのか?
168仕様書無しさん
2011/07/02(土) 03:10:15.72
そうやって排除するのか?
169仕様書無しさん
2011/07/02(土) 03:12:19.09
当然。
170仕様書無しさん
2011/07/02(土) 03:13:05.09
この業界の性格丸出しだね
171仕様書無しさん
2011/07/02(土) 03:14:11.18
バカを排除するのに性格もクソもあるか。
172仕様書無しさん
2011/07/02(土) 03:23:07.31
そうやって、優越感に浸るのも...
17392
2011/07/02(土) 08:54:00.52
やっぱりな、結局誰一人分類出来なかったな。
自分達が分類出来ないものを俺に分類して説明しろだと!
知識もない、いい加減な事しか言わない最低な奴らの集まりか。

>>156
IOExceptionは「CPUの例外」「OSの例外」「言語の例外」でどれだ?

>>158
>[割り込みだと両方セグメンテーション違反]
>・配列境界違反
>・スタック例外
>程度が知れるなw
俺には、お前の程度が良く分かるが。
OSレベルの知識しかないんだな。
>両方セグメンテーション違反
馬鹿か?詳細に分類したものを大雑把にいってどうする。
それなら全て例外と分類すればいいだろう。

>>162
なんでお前らが勝手に決めた分類を
俺が出来ないといけないんだ? お前は頭おかしいだろう。

>>165
> 0除算ひとつとってもプロセッサが例外を発生させることもあればソフトウェアが
>検知して言語の例外を発生させることもある
よくそんな嘘を平気で書けるな。
”ソフトウェアが検知して”ってどんな仕組みで感知してるんだ?
具体的に説明してくれ。 まっ逃げると思うが。
174仕様書無しさん
2011/07/02(土) 09:01:03.51
>>173
> ”ソフトウェアが検知して”ってどんな仕組みで感知してるんだ?

仕組みというほどのこともない。

int f(int a, int b)
{
  if (b == 0)
    throw division_by_zero(a, b);
  return a / b;
}
175仕様書無しさん
2011/07/02(土) 09:01:56.04
div(a, b){
if(b == 0){
throw new hoge();
}
...
}
176仕様書無しさん
2011/07/02(土) 09:03:44.14
もしかして、throwで例外を発生できることをしらない?
177仕様書無しさん
2011/07/02(土) 09:17:06.65
>>173
> やっぱりな、結局誰一人分類出来なかったな。
お前のお題が曖昧すぎるからだろ。 >165 の言うとおり。
178仕様書無しさん
2011/07/02(土) 09:23:18.55
> やっぱりな、結局誰一人分類出来なかったな。

おまえ一人がおかしい、という可能性をなぜ考えない。

> 自分達が分類出来ないものを俺に分類して説明しろだと!

おまえ、自分はすべてわかってる、他人はすべてバカ、って態度だろ?
それを裏付けるものがなにもねぇじゃねぇか。

> 知識もない、いい加減な事しか言わない最低な奴らの集まりか。

おまえこそが、知識もない、いい加減な事しか言わない最低な奴じゃねぇか。

> お前らが勝手に決めた分類

とか言うが。

> 擬似例外は、例外機構じゃない、擬似は擬似だ。

勝手な分類をはじめたのはおまえじゃないか。
179仕様書無しさん
2011/07/02(土) 11:29:58.30
>>174-176
それは単に例外を発生させているだけ。
それなら、チェックしないで>return a / b;
を実行した場合>return a / b;が検知場所か?

どこで検知して、どう例外処理を実行させているかを聞いているが。
180仕様書無しさん
2011/07/02(土) 11:32:54.05
はぁ?
181仕様書無しさん
2011/07/02(土) 11:40:37.08
もうスルーしようぜ、いい加減に。
182仕様書無しさん
2011/07/02(土) 11:43:06.83
割り込みスレでもCPU例外スレでも立てて、そっちでやってくれよ。
183仕様書無しさん
2011/07/02(土) 11:45:58.79
>>179
お前の中では「チェックする」と「検知する」が別物で、
「例外を発生させる」ことと「例外処理を実行させる」ことが異なるのか?
微妙すぎてわからんw
184仕様書無しさん
2011/07/02(土) 12:01:15.01
>>179
> どこで検知して
条件文で

> どう例外処理を実行させているかを聞いているが。
その言語に備わっている仕組みで。

CPUの割り込みも、OSの例外も出てくる幕はない。
18592
2011/07/02(土) 12:04:13.20
まったく、じゃ簡単に書く。
int f(int a, int b)
{
if (b == 0)
  throw division_by_zero(a, b);
return a / b;
}

int f(int a, int b)
{
return a / b;
}
の例外処理が実行される仕組みはどう違う?

アセンブラでデバッグしながな追いかければ
すぐわかるだろう。

>>184
お前は特によくアセンブラを追いかけろ。
186仕様書無しさん
2011/07/02(土) 12:13:43.20
>>185
int f(int a, int b)
{
return a / b;
}
もしかして、この場合も事前にゼロチェックしてるとおもってるのか?
187仕様書無しさん
2011/07/02(土) 12:17:30.78
例外を発生させることができるのはCPUだけ。

という宗教です。
188仕様書無しさん
2011/07/02(土) 12:22:51.00
このスレ定期的に盛り上がるな
189仕様書無しさん
2011/07/02(土) 12:25:29.58
割り込みと例外の区別ぐらいつけろよw

0除算とかそういうのは割り込みであって例外ではない。
割り込みを復旧させるときに例外に変換することはある。
だが例外そのものは割り込みではなく
CPUが発生させる物。
190仕様書無しさん
2011/07/02(土) 12:33:30.09
>>185
b が 0 の場合、前者は C++ の規格に沿って例外処理が実行される。

同じ条件で、後者は未定義動作となるので何がどうなるとも言えない。
プログラムが止まるかもしれないし、 0 が返されるかもしれないし
1 が返されるかもしれないし、前者とまったく同じ動作になるかもしれない。
191仕様書無しさん
2011/07/02(土) 12:33:58.07
>>189
CPU の割り込みと例外の区別は CPU ごとに違うので、 CPU を
特定してからじゃないとなんとも言えない。たとえば ARM あたりだと
「割り込み⊂例外」という扱いだったりする。
192仕様書無しさん
2011/07/02(土) 12:37:12.43
割り込みに性質として、なるべく早く割り込み処理を
終わらせるというものがあるが、
その性質を考えれば、例外とは別物だって分かるだろ。

割り込みは、システム全体から見た他の処理を中断させることになり、
また他の割り込みを遮ることがあるから
なるべく早く復帰しないといけない。

だが例外は違う。ゆっくりとエラー処理をすれば良い。
基本的に該当プロセスで発生した例外は、システム内の
他のプロセスに影響を与えることがない。
193仕様書無しさん
2011/07/02(土) 12:44:49.48
別に架空の話をしているんじゃなくて
現実に動いているものの話なんだから
動かせば直ぐにわかる問題じゃないのか?
194仕様書無しさん
2011/07/02(土) 13:08:06.93
ここ隔離スレだろw
隔離スレが隔離スレとして機能してるんだから、正常進行じゃないか。

>>192
あー。OSの設計とか次第だけど、割込みサービスルーチンではフラグ立てるか
カウンタをアップするだけで、必要な処理は別に起動したりとかするよね。
19592
2011/07/02(土) 13:22:02.34
例えばWindowsの場合

int f(int a, int b)
{
if (b == 0)
  throw division_by_zero(a, b);
return a / b;
}
例外を発生(throw)させると、WinAPIのRaiseExceptionが呼ばれ
割り込み処理(INT 2Eh)が走る。

int f(int a, int b)
{
return a / b;
}
徐算エラーで割り込み処理(INT 00h)が走る。
196仕様書無しさん
2011/07/02(土) 13:24:57.20
>>195
> 例外を発生(throw)させると、WinAPIのRaiseExceptionが呼ばれ
> 割り込み処理(INT 2Eh)が走る。

それ、 VC++ で /EHa を指定したとき限定の話だよね?
http://msdn.microsoft.com/ja-jp/library/1deeycx5.aspx
197仕様書無しさん
2011/07/02(土) 13:36:20.56
なんだ。古い VC++ しか知らなかったのか。そうかそうか。
198仕様書無しさん
2011/07/02(土) 13:41:17.79
割り込みはハードウェア的な話(ソフトウェア的に擬似的に発生するものを含める)
システムワイドに発生するものなので、プロセス事の割り込みという考え方はない。

例外は基本的にそのプロセス限定で発生する。
他のプロセスは全く感知されない。

このスレで話しているのは、後者の例外。
プロセス内で完結するもので、それ以外の話は無関係。
199仕様書無しさん
2011/07/02(土) 15:07:36.54
>>155

純粋な機械レベルでの分類
CPUの例外
 算術エラー(SIGFPE)
  ・徐算エラー(VM)
 セグメンテーション違反(SIGSEGV)
  ・配列境界違反(VM)
  ・スタック例外(VM)
  ・一般保護例外(OSまたはVM)
 不正命令(SIGILL)
  ・一般保護例外(OSまたはVM)
  ・無効命令(OSまたはVM)

※CPUから取り出せる例外はこの3種類だけ。
200仕様書無しさん
2011/07/02(土) 15:09:25.80
>>199
SIGBUS は違うの?
201仕様書無しさん
2011/07/02(土) 15:11:49.17
>>195 だからさぁ何が言いたいの?例外は割り込みだけで、ほかは擬似例外と呼べっつう
言葉遊びがしたいだけなの?
202仕様書無しさん
2011/07/02(土) 15:13:36.68
>>200
おおそうだね。一般保護例外はと無効命令は(SIGBUS)にも含まれるね。
抜けてたわ。
203仕様書無しさん
2011/07/02(土) 15:30:28.39
>>195
INT 2EHはカーネルモードへの移行。所謂スタブと同じ話で
例外とは関係ない。例外に限らずAPIを呼び出しカーネルモードに行く場合は呼び出される。

INT 00は割り込みハンドラを明示的に呼び出す場合に使うもので、除算時にソフトに明示的に
呼ばれる事は無い。除算時はCPUからINT 00に相当する割り込みが発生するだけ。
それがSIGFPE。
20492
2011/07/02(土) 17:05:33.54
>>196
VC++なんて触ったこともない。
>それ、 VC++ で /EHa を指定したとき限定の話だよね?
/EHaを指定しない場合はアセンブラでどう動いているんだ?

>>198
>例外は基本的にそのプロセス限定で発生する。
それに対応している言語と例外は何だ?
その方がはるかに少数だ。ローカル言語を一般みたいに言うな。

>>199
俺は三つの分類を教えてくれとたのんだが?
それにそれは、UNIX系のシグナル分類にすぎないだろう。
俺の書いた割り込みはシグナルのもとになっているもの。

>>203
>INT 2EHはカーネルモードへの移行。所謂スタブと同じ話で
INT xxが割り込みを発生させる命令なんだが、意味がわからん。

>INT 00は割り込みハンドラを明示的に呼び出す場合に使うもので、除算時にソフトに明示的に
>呼ばれる事は無い。除算時はCPUからINT 00に相当する割り込みが発生するだけ。
書き方がわるかった、明示的には呼ばれていない。基点という意味で(INT 00h)と書いた。
まっこれは、CPUが発生される例外だと誰でも分かることだと思ったが。

>それがSIGFPE。
だから基点は割り込み番号:00hの処理で、それはUNIX系OSが勝手に対応付けしているシグナルにしかすぎない。
それはOSレベルの話だ。
205仕様書無しさん
2011/07/02(土) 17:23:55.91
えーと、このスレでは、

OSが捉えて処理する部分は無関係です。
OSが処理して各プロセスに振り分け
その言語の例外型(JavaならException)に
変換されてからが話の対象です。

INT xxの話で説明するなら、C++の文法でINT xxという
命令はありません。(インラインアセンブラは当然除く)
だからこの部分はC++の話としては対象外です。

また、INT xxが発行されてから、プロセスが直接処理をもらうことはありません。
まずOSが処理します。この部分はC++言語の範囲の処理ではないので
このスレの対象外です。

色々と処理された結果、C++のExceptionとなってからが話の対象です。
206仕様書無しさん
2011/07/02(土) 17:35:49.60
割込みと例外の区別が付いていない奴が騒いでるだけだろ。
割込みの話をしたいのなら、割込みを正しく使えないプログラマ多いね。スレで。
20792
2011/07/02(土) 18:21:32.63
>>205-206
わかった、俺も本当は例外が割り込みだから
例外はどうあるべきかを話したかったが
もう俺は書き込まない。

本質を無視して、目先の事だけを話してくれ。
208仕様書無しさん
2011/07/02(土) 18:26:55.99
「本質」という言葉を使う奴の99%は「俺様の定義する」である件
209仕様書無しさん
2011/07/02(土) 18:27:45.46
やっといなくなるのか。よかったよかった。
210仕様書無しさん
2011/07/02(土) 19:56:43.61
>>205
CPUの例外がJavaやC++の例外に変換されるみたいな言い方だけど、
実際はそんなことは稀なんじゃないの?

まったく関係ないことのほうが多いでしょ。
211仕様書無しさん
2011/07/02(土) 20:23:10.15
またお前かwなんでこのスレでの例外は言語の機能だと何度言えば…
で、8086より先の話はどーしたのよ。
212仕様書無しさん
2011/07/02(土) 21:32:30.22
また半年ぐらいしたら現れるんじゃねーの
213仕様書無しさん
2011/07/02(土) 21:50:44.32
>>210
そこそこはあるよ。いちいち割り算の度にjzとかアセンブリ命令入れてたら非効率だからね。
>>199 に分類されてるものは、インタプリタやVMベースだと言語の例外機構に変換されてんじゃない?
まぁ、C++の場合はハードに依存するマッピングは自分でヤレがセオリーなんだろうけど。
214仕様書無しさん
2011/07/03(日) 09:02:52.86
>>210
こんなものがあった、割り込みと例外について書いてある 143ページから
http://books.google.co.jp/books?id=hsb0UKJWQs8C&pg=PA152&dq=%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%A8%E4%BE%8B%E5%A4%96&hl=ja&ei=ta4PTvWEDuqimQXJ_eDEDg&sa=X&oi=book_result&ct=result
215仕様書無しさん
2011/07/03(日) 10:57:31.06
おー…伸びてると思って覗いてみればすごい恥ずかしい奴がいるな…
216仕様書無しさん
2011/07/03(日) 11:17:50.69
>>214
読んだらわかったわ、誰が馬鹿かがw
92は”馬の耳に念仏”のことわざを覚えたほうがいいぞw
家畜になにを期待しているんだw
217仕様書無しさん
2011/07/03(日) 11:38:10.49
>>214
でも、そのLinuxをC++で作るときの例外はどうするの?
218仕様書無しさん
2011/07/03(日) 11:40:19.80
たとえばIOの例外についてだけど
例外を正しく使えないプログラマって、
selectを使いこなせないとかそういうこと?
219仕様書無しさん
2011/07/03(日) 11:46:59.77
select の exception って、例外つーより OOB 食らった時じゃなかったっけ
socket 関連エラー拾えない実装があったような…
220仕様書無しさん
2011/07/03(日) 12:09:14.81
俺はもう少し92の話が聞きたかった
痛い奴は氏ね
221仕様書無しさん
2011/07/03(日) 12:10:25.01
じゃ、92と語るスレでも立てればいいじゃん。
222仕様書無しさん
2011/07/03(日) 12:12:59.29
92は例外がどう実装されてるかという話ばかりで、
例外をどう使うかには興味がないみたいだけど。
223ラプラスの天使 ◆daemontaDA
2011/07/03(日) 12:18:11.54
>>92
それは例外処理の一種あって全てじゃないんだがw

キミらが好きなVBや昔のBASICにも例外処理があってだな、

ネットに転がってる例外処理の解説記事はだな、

例外なく間違いなく間違っているとう事実だ。w
224仕様書無しさん
2011/07/03(日) 12:19:48.51
最後の「本質」が何かじゃんw
それより俺も、痛い奴には氏んでほしいわw じゃま
225仕様書無しさん
2011/07/03(日) 12:24:35.09
以下、自演レスでお送りします。
226仕様書無しさん
2011/07/03(日) 12:26:55.40
ばーか、他人だよw 被害妄想乙w
227ラプラスの天使 ◆daemontaDA
2011/07/03(日) 12:30:55.83
どーでもいいけど、例外を正しく使えっていう表現が変だろw

例外が起きないようにプログラムを組やがれw
228仕様書無しさん
2011/07/03(日) 13:00:42.28
>>224
92は本質じゃなくて、実装について語りたがってたみたいだけどね。
229仕様書無しさん
2011/07/03(日) 13:02:29.54
>>223
>昔のBASICにも例外処理があって
On Errorのことか? それは例外処理じゃないぞ
例外はfinally機能が大事だ
230仕様書無しさん
2011/07/03(日) 13:38:51.43
何この屑コテ
231仕様書無しさん
2011/07/03(日) 13:46:38.49
にわかなんで214の内容とか理解はしてないけれど
結局92は、実装レベルの視点でみて、何を問題視してたのかがよくわからん。
究極的にどのような問題があるから、実装レベルでの理解が必要だって話なんだろ。

なんつーか、お前らそんなことも知らないのか馬鹿だろ俺は知ってるぞ
っていう事ばっかで、どのレスにも中身がない感。
232仕様書無しさん
2011/07/03(日) 13:47:11.36
>>227
そういう視点でしか見れない人はマには向いてない。
233仕様書無しさん
2011/07/03(日) 13:47:29.11
実装こそ本質、と思ってる奴は結構いるよな

下手をすると規格なんて飾りです、とか本気で言い出すw
234仕様書無しさん
2011/07/03(日) 14:03:24.15
規格なんて飾り
235仕様書無しさん
2011/07/03(日) 14:32:25.54
構造化想定外処理

try {
 原発運用();
} catch( 想定外 s ) {
 // NOP
}
236仕様書無しさん
2011/07/03(日) 14:39:42.84
>>94の主張が嘘じゃないなら>>121とは別人なんだろうけど、
121にある過去スレの主張してた内容で見たら、結局は趣味の話。
俺は業務エラーで割り込みなんて気に食わないからよろしくないと思う。って感じの結論になるような。

まぁ、本質()の話題はもういいわな。その部分の理解は多くの場合必須じゃないし。
昨今の職業マのレベルで考えたら、勉強にかかる時間の割りにメリットはあまりないから、
興味がある人が自分で理解すればいいと思うレベルの話で、このスレの目的とは違うでそ。
237仕様書無しさん
2011/07/03(日) 14:49:14.95
正しく使えない人が多い一番の理由って、
 例外==エラー
という認識しかしてないからじゃないかなって思う。

例外エラーとか、言いたい事はわかるんだけど、
よく考えるとなんか変な気分になる単語みかけることもよくあるし。
238仕様書無しさん
2011/07/03(日) 15:23:26.25
>>229
> On Errorのことか? それは例外処理じゃないぞ
> 例外はfinally機能が大事だ

catchじゃないのか?

finallyはなくてもcatchがあれば
finallyと同じことが実装可能だし。
239仕様書無しさん
2011/07/03(日) 16:13:20.29
unwind-protect
240仕様書無しさん
2011/07/03(日) 16:17:11.11
>>229
いや例外処理だぞ。
try catch型例外機構じゃないだけで。
例外機構によって例外処理じゃないと言い始めたら >>92 と同類。
241仕様書無しさん
2011/07/03(日) 16:28:58.32
>>214
それ、210と何か関係あるの?
CPUの例外がLinuxではシグナルに変換されてプロセスに通知される、って話だよね?
WindowsのSEHでもそうだけど、そこから先でさらに言語の例外に変換されることが
あるかどうかって話でしょ210は。
242仕様書無しさん
2011/07/03(日) 16:38:16.81
普通にあるだろ。0除算とか。
243仕様書無しさん
2011/07/03(日) 17:04:48.94
>>240
俺もfinallyがないのは例外じゃないと思うな
それならただのエラー処理だろう、名前もOn Errorだし

俺は>>214よんだから92は間違ってはいないと思っている。
92がいなくなるより、240みたいに決め付ける奴にいなくなってほしい。
244仕様書無しさん
2011/07/03(日) 17:10:32.07
>>237の言っていることが正解だと思う。
245仕様書無しさん
2011/07/03(日) 17:24:45.74
>>243
> 俺は>>214よんだから92は間違ってはいないと思っている。

さすがにそれは無い。

LinuxのシグナルやWindowsのSEHなど(OSの例外)がCPUの例外を
プロセスに配信するだけのものがほとんどで関連性が強いのは
認めるが、このスレの主題である言語レベルの例外がそれらに
依存するなどということは無い。

もともと>>92の言う「例外」が「CPUの例外」や「OSの例外」を
指していて「言語の例外」を指していないのなら内容は間違って
いないと言えるかもしれないが、それをこのスレで偉そうに言うこと
自体が間違っている。
246仕様書無しさん
2011/07/03(日) 17:24:47.91
>>214は"CPUの例外"の扱いについて書いてあるだけ。
何で、「CPU割り込み例外 = 例外」って書いてるやつの肯定になるんだよ。
CPU割り込み例外も例外の一種だから忘れるなというならわかるけど。
てか >>243 = >>92 なんじゃないか?
247仕様書無しさん
2011/07/03(日) 17:30:59.82
そうか?214を読むと他の奴らが言っていることが間違っていたと思えるが。
248仕様書無しさん
2011/07/03(日) 17:31:03.02
>>229
finally無くてもデストラクタついてりゃ済むじゃん。
デストラクタ無くても.net環境とかRubyとかデストラクタ相当の
ブロックスコープがあるし。
249仕様書無しさん
2011/07/03(日) 17:33:19.63
>>247 >>214のどのあたりに感化されたの?
上のほうで割り込みベクタとか、スタブとか言って>>92
応戦してる人はこの内容知ってて話してるようだけど。
250仕様書無しさん
2011/07/03(日) 17:35:12.73
>>248
はっ?
251仕様書無しさん
2011/07/03(日) 17:39:51.64
>>247 おかしいな、俺には見えない何かを読んでいるようだ。
252仕様書無しさん
2011/07/03(日) 17:41:02.47
>>248
例外が発生したらオブジェクトを破棄するの?
253仕様書無しさん
2011/07/03(日) 17:43:33.67
>>252 別に破壊する必要ないけど?
それと、finallyは例外発生の有無に関係ないでしょ?
254仕様書無しさん
2011/07/03(日) 17:49:46.85
>>249
例外がCPUとOSに依存しているところ。
スタブはOSどまりでしょう。
255仕様書無しさん
2011/07/03(日) 17:51:34.64
>>254
92はスタブが間違っていると書いているか?
256仕様書無しさん
2011/07/03(日) 17:52:21.72
例外と、例外処理と、例外機構をごっちゃにして例外と呼ぶのをどうにかしてくれんか?
アセンブリをアセンブラでアセンブルするのに。
アセンブリを書くことをアセンブラを書くっていってるぐらい変。ていうか分かりづらい。
そりゃアセンブリの事を聞きかじったヤツがアセンブラ、アセンブラって言ってんのは分かるけど、
アセンブラの設定までしなきゃならん環境でアセンブリをアセンブラと言われちゃなんの事かわからなくなる。

例外についてもおんなじだから。頼むから書き分けてくれ。
ちゃんとExceptionとException handling、Exception mechanismで別れてんだから。
257仕様書無しさん
2011/07/03(日) 17:53:15.55
>>253
デストラクタはいく動かすの?
258仕様書無しさん
2011/07/03(日) 17:55:44.35
>>254 やっぱり >>92 か。 >>214は"CPUの例外"で
例外の全てについて書いてる訳じゃないって何度言われ手も >>92 みたいに解らないようだ。
259仕様書無しさん
2011/07/03(日) 17:56:46.05
>>257
finallyと同じタイミング。
RAIIをはじめとして、オブジェクトの破棄だけに使うもんじゃない。
260仕様書無しさん
2011/07/03(日) 17:59:44.90
CPUで発生した割込みは >>214の機構を使って各プロセスに通知されるけど
それと言語における例外は別の話だからなぁ。
だから、CPUレベルで0割による割込みが発生して、各プロセスに通知された
としても、それがC++の例外としてcatchできるわけではない。
(catchできる環境もあるだろうけど)

>>92は言語における例外を擬似例外とか言って相手にしたくなさそうだったけど、
そもそもこのスレは言語における例外をどう使うかを議論してきたわけで。
261仕様書無しさん
2011/07/03(日) 18:00:18.70
>>229 はfinallyを何に使う気なんだろ・・・。
262仕様書無しさん
2011/07/03(日) 18:13:30.59
finallyはガベージコレクタというか
スコープから抜けだしたときに自動的に
終了処理をできない言語では必須だろうけど、
ほとんどの言語ではできるから、使わないと思うんだが?
263仕様書無しさん
2011/07/03(日) 18:28:42.93
例外と話ずれるけど、なんでJavaのfinallyってtryが必要なんだろ?
finallyブロックだけありゃいいだろうに。Windowの構造化例外ぱくったからか?
264仕様書無しさん
2011/07/03(日) 18:32:22.53
>>263
お前はfinallyブロックでなにをするつもりなんだ?
265仕様書無しさん
2011/07/03(日) 18:33:59.21
>>259
finallyとデストラクタが別の処理だったら?
そもそもそれなら何でfinallyがあるの?
266天使 ◆uL5esZLBSE
2011/07/03(日) 18:34:00.87
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど

もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ


今日何ゴミの日だっけ?
267仕様書無しさん
2011/07/03(日) 18:37:02.30
天使◆uZeeeは新しいバリエーション作ったのか?w
268仕様書無しさん
2011/07/03(日) 18:39:29.15
というかfinallyの意味わかってないだろ。

tryブロックに入ったら、そこから出る時に必ず実行されるのがfinallyなんだから、
finallyだけだったら実行すべきタイミングわからんじゃない。
269仕様書無しさん
2011/07/03(日) 18:41:26.06
>>265 Disposableな一時オブジェクトつくるのが面倒だからだろ。
Javaに限れば、ブロックスコープでの処理の強制実行がないから。
270仕様書無しさん
2011/07/03(日) 18:41:37.02
>>258
>例外の全てについて書いてる訳じゃない
例えば?
271仕様書無しさん
2011/07/03(日) 18:42:32.79
>>264
ファイルのcloseとか。
ファイル閉じるのに別にtryブロックは要らんよな。
272仕様書無しさん
2011/07/03(日) 18:44:28.86
>>268
あれ?tryブロック入らなかったら、finally実行されないんだっけ?
273仕様書無しさん
2011/07/03(日) 18:44:45.98
>>260
>CPUレベルで0割による割込みが発生して、各プロセスに通知された
>としても、それがC++の例外としてcatchできるわけではない。
出来ない環境ってなに? 具体的に。
274仕様書無しさん
2011/07/03(日) 18:47:46.98
finallyを使わない人はリソース保護どうしているの?
275仕様書無しさん
2011/07/03(日) 18:48:52.01
>>270
FORTRAN時代からException handlingと呼ばれた処理。
損壊データに対する例外処理とかな。
276仕様書無しさん
2011/07/03(日) 18:50:04.42
>>274
デストラクタ、disposeとusing。
277仕様書無しさん
2011/07/03(日) 18:50:39.93
>>274
あとOSとリソース管理ライブラリへの委託か。
278仕様書無しさん
2011/07/03(日) 19:47:20.98
>>270
FORTRANの例外はCPUとまったく関係なく動くの?
279278
2011/07/03(日) 19:48:43.66
間違えた
270→>>275
280仕様書無しさん
2011/07/03(日) 19:55:23.27
>>276,277
ファイルクローズやDBクローズもそれでやるのか?
281仕様書無しさん
2011/07/03(日) 19:55:39.67
だからなんで「まったく」関係なく、が出てくるんだよw
交通事故にクルマの故障がまったく関係ないって言うバカがいるか?
282仕様書無しさん
2011/07/03(日) 20:00:08.55
>>281
そういう意味じゃなく、CPUの割り込み関係なく例外が動くの?
283仕様書無しさん
2011/07/03(日) 20:13:35.59
>>280
やるよ。やらない理由がないでしょ?
284仕様書無しさん
2011/07/03(日) 20:14:20.16
>>282
そもそも、CPUの割り込みと関係ない例外を
話すのがこのスレのテーマだよ。
285仕様書無しさん
2011/07/03(日) 20:25:08.32
>>273
0 割が C++ の例外として catch できることのほうが稀なわけだが。

できない環境を具体的に挙げろと言われれば、 VC++ で /EHs を
指定すればそうなる。
286仕様書無しさん
2011/07/03(日) 20:37:05.11
>>285
それで? どうやって実装しているの?
287仕様書無しさん
2011/07/03(日) 20:48:52.54
>>286
上の方に書いてあるので読み直してください。

つか0除算なんて例外機構で処理するハメになっても何もそのプロセス単体じゃ出来んと思うけど。
本来0除算が発生しないようにプログラムを組むべきだし。
288仕様書無しさん
2011/07/03(日) 20:50:51.61
>>278
だから例外機構と例外処理は違うと何度言ったら・・・。
289仕様書無しさん
2011/07/03(日) 20:52:04.64
>>286 >>115 とか。
290仕様書無しさん
2011/07/03(日) 21:06:50.18
漏れまくりだけど、整理してみた。
とりあえず、下に書いた関係に踏まえてレスしろ。

割り込み = new 割り込み();
入出力制御 = 割り込み;
タイマー等タイミング制御 = 割り込み;
例外機構 = 割り込み;
例外機構 = new OS例外();
例外機構 = new 言語例外();
例外機構 = new 戻り値例外();

例外処理 = new リソース開放();
例外処理 = new バックアップ復帰();
例外処理 = new 初期化による再試行();//Watchdog
例外処理 = new 上位プロセスに通知後終了();
例外処理 = new 例外に対するユーザー操作問い合わせ();

例外 = new 不正メモリ領域へのアクセス();
例外 = new データの破損();
例外 = new 不正データ入力();
例外 = new 入出力失敗();
例外 = new リソース不足();
例外 = new タイムオーバー();
291仕様書無しさん
2011/07/03(日) 21:11:02.26
>>287
お前は例外処理でなにをしようと考えてるんだ?
0除算が発生したらやることはない?素人か?
実際に動くアプリを作ったことがないのか?


やるかやらないかは、アプリの仕様次第だが、
0除算が発生したときにやることはたくさんある。

・0除算が発生したことを画面に表示する。
・0除算が発生したことをログに記録する。
・スタックトレースを表示する。
・0除算が発生した処理のみを中断させ、正常なコマンド入力状態戻す。

やることはたくさんあるだろ。
292仕様書無しさん
2011/07/03(日) 21:11:34.50
>>290
分かりやすく書きなおせ
293仕様書無しさん
2011/07/03(日) 21:15:16.90
このスレにおける例外というのは、
CPUが発生させたとかハードウェアが発生させたとかは
気にするところではない。

プログラムのコードとして例外と呼ばれるオブジェクトを生成し
それを上位関数に返す行為のことを指す。オブジェクトの生成も
それを上位関数に返すのも、割り込みを必要としない。

一部の例外はハードウェアの状態が例外送信のきっかけに
なっているかもしれないが、そのことを意識してはいけない。

つまり抽象化。

ソフトウェアが割り込み機能を使わずに、
発生された物。それを例外としてこのスレで扱う。
割り込みの話はすれ違い。
294仕様書無しさん
2011/07/03(日) 21:23:58.47
>>291
さてあなたの発見したゼロ除算はどこで発生したんでしょうね。

try
{
     Example object = new Example();
     object.Method(10,20,30);
}
catch(・・・)
{
     ・・・
}
こんな感じで入力だけに閉じてるなら問題ないし、>>291の対処法をとるのは正解だよ。
でも1つでも出力があったり、ゼロ除算を発生させる可能性のある式が露出してたら、
例外処理すら失敗する可能性がある。そもそも、ゼロ除算が発生する箇所が
最初から解ってるなら、ゼロ除算を発生させないように書けるはずだしね。
295仕様書無しさん
2011/07/03(日) 21:28:28.74
>>294
> さてあなたの発見したゼロ除算はどこで発生したんでしょうね。

tryの中のどこか。

どこで発生したかは、例外オブジェクトが持っている。
例外オブジェクトに聞けば、発生した箇所を
スタックトレースとして取得できる。


常識だと思うんだが、こんなことも知らないの?
296仕様書無しさん
2011/07/03(日) 21:30:50.20
>>291
大半の例外機構にリトライ機能がないのはなぜか知ってる?
例外が起こり得た範囲の値は全て信用できないからなんだってさ。
RuntimeErrorの類がチェック例外になっていないのはコレがひとつの理由だって。
もうひとつは、プログラマの意図を把握する手段が無いからだって。
297仕様書無しさん
2011/07/03(日) 21:32:16.92
>294
例外をただの割り込みだと思ってるから
詳細な情報を取得できるってことがわからないんだろうね。

まあ、そういう勘違いしてしまう理由もわからなくはない。
お前が考えている例外はCPUが発生するもの。
つまり言語(プログラムのソースコード)とは関係ない。

例外が言語と関係ない。機械語上で起こることなのだから、
機械語がソースコード上のどこで発生したかを知るわけがない。
このように考えているのだろう。

だから、そういう意味の例外はスレ違いなんだよ。
このスレの例外は、ソースコードのメタ情報を持っている。
ユーザーがいくらでも情報を追加できる仕組みがある。
298仕様書無しさん
2011/07/03(日) 21:34:25.56
>>296
> 大半の例外機構にリトライ機能がないのはなぜか知ってる?

ん?

例外機能とリトライ機能は全くの別物だからだよ。

お前が言ってるのは、「関数にリトライ機能がないのはなぜか?」のような
まったく意味不明なことを言っている。

リトライは例外機能とは別に追加するするもの。
どんな箇所にでもリトライ機能は組み込める。
そして組み込むかどうかはアプリの仕様できまる。
299仕様書無しさん
2011/07/03(日) 21:34:38.55
>>295
0除算が影響するデータはtryブロックから絶対出てこないんだ。へぇ〜。
じゃあその結果はどこで受け取る予定だったんだろうね。

スタックトレースをそのプログラムで解析して、ゼロ除算になった変数を特定しデータを復帰するの?
俺が場所が解るってのはそういう事なんだけど。データ破損についていってるのにスタックトレースとか入門者かよ。
300仕様書無しさん
2011/07/03(日) 21:36:40.80
> 例外が起こり得た範囲の値は全て信用できないからなんだってさ。

聞いたこと無いんだが。
信じる信じないも、そこに書いたコードで示されているとおり。

CPUの割り込みの話と勘違いしてるだろ?w
301仕様書無しさん
2011/07/03(日) 21:37:41.58
>>295
お前、0除算したときにどうするかは
一つに決まると思ってないか?

0除算したら、その値は0として扱うとか考えてるでしょ?
302仕様書無しさん
2011/07/03(日) 21:37:46.77
>>298
文脈を読め。もしゼロ除算で他に影響が無いならリトライも可能になるはずだろうがって言ってんだろ。
ハゲを初め言語制作者はそれを無理だといってんの。
303仕様書無しさん
2011/07/03(日) 21:40:09.26
>>300 今例外全般の話をしてないよ。
この1つのレスに答えてるだけ。例外自体は原因を特定できるけどそんな問題じゃない。

> 291 名前:仕様書無しさん [sage]: 2011/07/03(日) 21:11:02.26
> >>287
> お前は例外処理でなにをしようと考えてるんだ?
> 0除算が発生したらやることはない?素人か?
> 実際に動くアプリを作ったことがないのか?
>
>
> やるかやらないかは、アプリの仕様次第だが、
> 0除算が発生したときにやることはたくさんある。
>
> ・0除算が発生したことを画面に表示する。
> ・0除算が発生したことをログに記録する。
> ・スタックトレースを表示する。
> ・0除算が発生した処理のみを中断させ、正常なコマンド入力状態戻す。
>
> やることはたくさんあるだろ。
304仕様書無しさん
2011/07/03(日) 21:41:12.72
あー、こんな話をきたことがあるわ。
アセンブラバリバリ出来る人が
C言語を理解出来ない。

C言語で変数使うと、
このメモリマップはどうなっているのか?と
聞くようなやつがいるって。

アセンブラの知識で気にすることを
C言語でも気にしてしまう。
本来気にする必要がないことを
気にしてしまう。そういう柔軟性のないヤツのことを。

ゼロ除算になった変数を特定することを
気にするのはなぜなんだろうねw
ゼロ除算になったソースコードの行を気にするのならまだ分かるが。(行は取得できる)
305仕様書無しさん
2011/07/03(日) 21:41:47.57
>>297 にも同じ話な。割り込みの話じゃない。>>291のレスに閉じた話。
306仕様書無しさん
2011/07/03(日) 21:42:16.52
この人は変数=レジスタなんじゃないだろうか?w
307仕様書無しさん
2011/07/03(日) 21:49:46.30
めんどくせぇなぁ。
このコードでゼロ除算が発生した場合、
このクラスのオブジェクトが健全だと言えるのか?
もちろんこのコード自体に問題があるが、
具体的に回避策を上げてみろよ。

class Sample implments Interface
{
public void setValue(int value){・・・}
public int getValue(){・・・}

public void exampleMethod()
{
try
{
Example example = new Example();
example.Method(this);
}
catch(・・・ゼロ除算キャッチ・・・)
{
>>303
}
}
}
308仕様書無しさん
2011/07/03(日) 21:51:46.15
見づらいんで直した。
class Sample implments Interface
{
         public void setValue(int value){・・・}
         public int getValue(){・・・}

         public void exampleMethod()
         {
                  try
                  {
                           Example example = new Example();
                           example.Method(this);
                  }
                  catch(・・・ゼロ除算キャッチ・・・)
                  {
                           >>303
                  }
         }
}
309仕様書無しさん
2011/07/03(日) 22:01:40.25
この馬鹿相手にするのは疲れたから
0除算はこのスレの話題の対象外としていいんじゃないか?

0除算なんて、別にCPUの割り込みを使わなくて実装できるでしょ?

割り算がある箇所をコンパイルしたら、
if 割る数 = 0 then throw 例外 という機械語が生成される
擬似言語の話をしましょうやw
310仕様書無しさん
2011/07/03(日) 22:02:21.10
でゼロ除算箇所を確実に特定し復帰する方法はある。

try
{
      y /= x;
}
catch(・・・ゼロ除算キャッチ・・・)
{
      >>303
}
ただし、この場合割り算一回に1個try catchが必要になる。
加えて、そこまで例外箇所を絞り込んでんなら初めからゼロ除算しないように修正しとくのが普通。
311仕様書無しさん
2011/07/03(日) 22:03:05.07
>>307
バグがあるコードが健全かどうか聞かれても困る。

例外が起きたとき、オブジェクトの状態が異常になることがあるが
それを回復させるのがcatchやfinallyの役割。

catchやfinallyの中で不安定になっていても、
それを抜けるときに回復させていれば問題ない。


回復させるというのは、処理を続行するということはではない。
不安定(不定)である部分をなくすということ。
エラーとして親関数に返すことも回復の一つ。

これぐらいヒントを与えれば、自分で気づけるだろ?
312仕様書無しさん
2011/07/03(日) 22:04:16.80
>>309 だから割り込みの話はしてないんだっつのアホ。
ゼロ除算があっても >>303の対処ができるとかいたんだろ。
それが無理だっつってんの。それが分かりゃ終わりだ終わり。
割込なんざどうでもいい。
313仕様書無しさん
2011/07/03(日) 22:04:35.71
>>310
if(x==0) {
  return 'error';
} else {
  y /= x;
}

こうすることに利点を三つ上げろ。
314仕様書無しさん
2011/07/03(日) 22:05:19.83
>>312
自分で、出来ることを>>310
証明しているようにしか見えんのだがw
315仕様書無しさん
2011/07/03(日) 22:06:17.36
>>311
具体的にコードを見せろ。素人じゃないんだろ。経験者なんだろ。さくっとコード出せるだろうが。
まさか、ゼロ除算に対するコード書いたこともないのに空論で語ってるだけのシステム土方か?
パッケージ開発した事があったりすれば解るだろ?
316仕様書無しさん
2011/07/03(日) 22:07:50.46
>>312
結局さ、お前0除算を例外で処理することを
毛嫌いしているだけじゃね?

どうせ0除算するコードをなくすと言っても
計算する前に0かどうかチェックするだけだろ?

めんどくさいよね。特に式が長くなった時とかさ。

x = a + b / foo() - c;

とかさ。if使ったら面倒になるでしょ。

でお前はifしか使えないから、例外なんか食わず嫌いで使ってないだけ。
317仕様書無しさん
2011/07/03(日) 22:08:35.88
>>315
まず、お前が先に
ゼロ除算に対する具体的なコードを見せろって
誰かに言われなかった?
318仕様書無しさん
2011/07/03(日) 22:11:33.09
>>313
最初から、ゼロにならないことを保証したオブジェクトとれば済む話。

int Method(int x,NoZerroObject object)
{
return x /= object.getValue();
}

>>314
>そこまで例外箇所を絞り込んでんなら初めからゼロ除算しないように修正しとくのが普通。
おわかり?
319仕様書無しさん
2011/07/03(日) 22:12:44.71
>>318
馬鹿だwww

じゃあその変数に0を入れようとしたところで
例外が発生するだけじゃないかw
320仕様書無しさん
2011/07/03(日) 22:12:49.86
>>317
問題があることを書いただろうが。
なんで問題があるっつってんのに自分で、問題が無いコードを提示すんだよ分裂症か俺は。
321仕様書無しさん
2011/07/03(日) 22:14:24.49
>>320
お前が示すのは、例外を使わないで
0除算を防ぐコードだよ。
322仕様書無しさん
2011/07/03(日) 22:15:47.46
>>318
ゼロにならないことを保証した変数を使えば
済む話だな。

>>310の例だと、

y /= NoZerroX ;
323仕様書無しさん
2011/07/03(日) 22:16:21.62
>>319
ゼロ除算は発生しないよな?
そもそもNoZeroObjectで例外が発せいた場合は、
NoZeroObjectにゼロが入力されたことは明らかだ。
最入力なり何らりさせても他に影響が無い。

問題の発生箇所が初めから特定可能なのと、
>>308のように不特定なのでは全然問題が違うぐらい解るだろ。
324仕様書無しさん
2011/07/03(日) 22:16:28.96
>>318があまりにも痛すぎるコードな県についてw
325仕様書無しさん
2011/07/03(日) 22:18:19.98
>>321
例外を使うなとは言っていない。"ゼロ除算例外は対応できない"といってんの?はよコード出せや。

>>322
そうだよ。そのとおり。
326仕様書無しさん
2011/07/03(日) 22:19:05.23
>>324 が素晴らしいコードを見せてくれと聞いて。
327仕様書無しさん
2011/07/03(日) 22:20:42.92
>>325はちょっと間違えた。
>>294の場合以外は"ゼロ除算例外は対応できない"だ。
328仕様書無しさん
2011/07/03(日) 22:23:52.22
誤解されてる気がするが、NoZeroObjectって名前のクラスを作るわけじゃないからな。
得られる値がゼロにならなければクラス名もメンバーも名前はなんでもいい訳だから。
329仕様書無しさん
2011/07/03(日) 22:24:43.64
>>323
> ゼロ除算は発生しないよな?
つか、本末転倒だろ。

ゼロ除算エラーが発生しない代わりに
ゼロ代入エラーに変っただけじゃん。

割り算するたびに変数の値を、そのNoZeroObjectとやらに
一回代入して0かどうかの実行時チェックをするのか?
毎回毎回。ifでやる面倒さをなにも解決していない。

頭悪いよ。

もしゼロ代入エラーにならないのなら、
xが0になることもないわけで、
そもそもy/=xで例外が発生することもない。
330仕様書無しさん
2011/07/03(日) 22:25:45.31
>>328
得られる値がゼロにならなければ、例外も発生しませんよ?

例外を使ったコードでも、
問題は解決ですよね。
331仕様書無しさん
2011/07/03(日) 22:26:07.05
このスレ、Javaでしか考えられないヤツが異様に多い割に、
オブジェクトの完全性とかそういう概念にはかなり疎いのな・・・。
332仕様書無しさん
2011/07/03(日) 22:28:38.28
で0除算にならないことをを保証する方法はないんだよね。

変数を使う前に、変数が0でないか
ifでチェックする方法はある。

だが、それは0除算にならないのではなく、
0除算になるコードに到達しないようにしているだけ。

もし到達してしまえば。0除算になる。
333仕様書無しさん
2011/07/03(日) 22:29:40.26
>>331
ネットでググッても書いてないようなことはわからないよ(笑)
334仕様書無しさん
2011/07/03(日) 22:41:45.43
0除算エラーがなぜ実行時エラーなのかというと
0除算ってのはコンパイル段階で除去できないからだよ。

たとえばユーザーの入力結果が0になることがある。
0にならなくても、長い計算の末0になることがある。
ユーザーが入力しなくても何らかの統計データを合計して0になることがある。

だから0にならないことを保証する方法はない。

あるとしたら、0にならないようにチェックするコードを書くことだけ。
だがそれは、書けば0にならないが、書かなければ0になるということ。

チェックコードを書くという保証はやっぱり得られないので、
0にならない保証もない。だから0除算を防ぐことを保証する方法はない。
335仕様書無しさん
2011/07/03(日) 22:42:32.15
>>330 そうだよそのとおりだよ。
void Parse(String[] valueBlock)
{
try
{
tihs.polygon.push(new Point( valueBlock[0]., valueBlock[1] ) );
}
catch(・・・エラー・・・)
{
//体積が0になったので入力エラー
}
}
入力時点で0に対処してりゃどこに渡ろうが0になることはない。
まぁ、計算結果0になるのであればそこでの対処はいるが、
0除算エラー例外に比べれば範囲ははるかに特定しやすいし、
他へのの影響もない。

>>332 具体的なコードを書けって。
336仕様書無しさん
2011/07/03(日) 22:45:48.68
>>334
>>303を読んだ上でいってるの?0除算を防げるかどうかがメインのテーマじゃない。
>>303のような対処法無理だし、最初からゼロ除算を防ぐ方法をこうじるしか無いっていう話なんだよ。
337仕様書無しさん
2011/07/03(日) 22:57:46.71
>>336

少しお前は話をまとめろ。


1.何のために
2.どうやって防ぐか

たった二つだ。
その両方を答えよ。
338仕様書無しさん
2011/07/03(日) 23:04:25.53
>>337
1. >>303のアホな対応により>>308のようなデータ破壊の連鎖を防ぐため
2. >>335のように意味論理的に0の発生を特定でき、他に影響が波及しないオブジェクトを使用する。
339仕様書無しさん
2011/07/03(日) 23:09:34.09
>>338
すでに例外とは全く関係ない話をしているな。

計算結果が0になるとき、それはどうする?
0が代入できないオブジェクトに代入するわけか?

その時に例外が発生するだろ。
その時データ破壊が防ぐことが可能だとなぜ言い切れる?

お前のコードで言えばこう言うことだ。
class Sample implments Interface
{
  public void setValue(int value){・・・}
    public int getValue(){・・・}

    public void exampleMethod()
    {
      try
      {
          Example example = new Example();
          example.Method(this);
      }
      catch(・・・ゼロ代入キャッチ・・・)
      {
        >>303
      }
    }
}
340仕様書無しさん
2011/07/03(日) 23:10:27.16
ずっとレス番間違えてたわ
>>303>>291 の事な。 引用してるから解るかもしれないけど。
341仕様書無しさん
2011/07/03(日) 23:11:05.61
1.0除算の結果、その時の変数の値を信用することはできない。

2.ゆえに0除算を防げば、その時の変数の値を信用できる。


※1は間違い。

342仕様書無しさん
2011/07/03(日) 23:13:43.49
そもそも勘違いは0除算をしたときに
オブジェクトが健全にならないと勘違いしていることだよ。

0除算に限らず、どんな例外が発生したとしても
そのクラスが正しく作られていない限り
オブジェクトは異常状態になりうる。
正しく作られていたなら、0除算が発生しても
オブジェクト自体は健全なまま。

それを踏まえて、0除算例外を0代入例外に
変えたとしても、オブジェクトは異常状態になりうるので
何の問題も解決しとらんのだよ。
343仕様書無しさん
2011/07/03(日) 23:15:43.12
本質を考えないまま、0除算さえ防げれば
問題解決すると考えているから、
0除算を0代入エラーにすればと訳のワカランのことを言ってるのね。
344仕様書無しさん
2011/07/03(日) 23:16:59.00
>>339
ならんよ。だってゼロ除算と違って発生場所が圧倒的に少ないんだもん。

try
{
      frameVector.sub(sourceVector);
      return new NoZeroVector( frameVector );
}
catch(・・・禁止されたゼロベクタ・・・)
{
       //図形が成立していないエラー
}

意味論理で考えれば、ゼロ除算の割る値になれる値が0になる箇所なんて
どう考えても最初から成立しない値になる。
345仕様書無しさん
2011/07/03(日) 23:19:28.56
>>344
言葉が変だった。
>意味論理で考えれば、ゼロ除算の割る値になれる値が0になる箇所なんて

>どう考えても最初から成立しない値になる。
どう考えても最初から成立しない値が発生してるのですぐ解る。
346仕様書無しさん
2011/07/03(日) 23:20:51.05
>>344
圧倒的に少ないから、ならないというのは
どう考えても論理的ではない。

それにお前初期値の話しかしてないよな?
0になるのは、なにも関数の引数にした時だけじゃない。

長い計算の結果の途中で0になることだってある。
それをどうやって防ぐんだ?

もしかしてすべての変数を0代入不可オブジェクトにするのか。
四則演算し全て使えなくなりそうだな。
なんか俺俺ライブラリ作ってオナニーしているのが目に浮かぶw
347仕様書無しさん
2011/07/03(日) 23:21:33.27
>>342
>そもそも勘違いは0除算をしたときに
>オブジェクトが健全にならないと勘違いしていることだよ。

じゃ>>308を健全な形に書きなおしてくれ。
コードにすらおこせん御託はいらんから。
348仕様書無しさん
2011/07/03(日) 23:21:36.67
>>345
最初から成立しない値が入っているのを防ぎたいののなら、

ifつかって変数の中身をチェックすればいいだけだよ。
349仕様書無しさん
2011/07/03(日) 23:22:44.62
>>347
> じゃ>>308を健全な形に書きなおしてくれ。

それは不可能。ゼロ代入エラーにしても不可能なことを
解決することは不可能。

まずお前が、どんな状態でも完璧に健全になるというコードを書け。
短い例だけではなく、複雑な例でも対応できるやつをだ。
350仕様書無しさん
2011/07/03(日) 23:24:17.52
>>346
意味論理的にって文字を読んだか?
体積1で高さが0の立方体とか存在すんのか?
机上の空論で語るなよ。具体的な例をあげてみろ。
351仕様書無しさん
2011/07/03(日) 23:25:56.68
NoZeroなんたらを使ったところで、
try
{
  NoZeroValue ret;
  this.lock = 1;
  ret = frameVector.sub(sourceVector);
  this.lock = 0;
  return ret;
}
catch(・・・禁止されたゼロベクタ・・・)
{
  //図形が成立していないエラー
}

なんてコードを書かれたら、オブジェクトは不健全な状態になるわけだが。
この例だと、lockされたまま処理が終わってしまう。問題はなにも解決してない
352仕様書無しさん
2011/07/03(日) 23:27:13.21
>>349
何行書かせる気だ、一行も書いてないくせに人にかけというな。
しかも、どんな場合でもというなら >>294 に書いた。
353仕様書無しさん
2011/07/03(日) 23:28:39.81
>>351
入力地点に図形が不正で、座標がオカシイって伝えるに決まってんだろ。
その時点で、このオブジェクト自体は破棄されプログラム上に不正なオブジェクトは存在しなくなるわ。
354仕様書無しさん
2011/07/03(日) 23:28:59.95
>>350
だから、お前は初期値の話しかしてないと言うんだよ。

体積を入力してください?
高さを入力してください?

if(高さが==0){エラー}

こういう単純な話しかしてないだろ?
こんなふうに関数の最初で0かどうかチェックできるような例なら簡単だろうさ。
355仕様書無しさん
2011/07/03(日) 23:29:45.49
>>353
> 入力地点に図形が不正で、座標がオカシイって伝えるに決まってんだろ。

入力時点で、おかしいかどうか分からない場合だってあるだろ。

やっぱり初期値チェックだけで済む話しかしてないわお前。
356仕様書無しさん
2011/07/03(日) 23:31:06.03
つでにゼロ除算エラーが入力地点まで上がっていった場合は、
どの入力した値が不正だったのか全く特定できなくなる。
図形の座標が原因とかそんな情報全くないからな。
357仕様書無しさん
2011/07/03(日) 23:32:25.63
>>351でNoZeroなんたらを使っていても
オブジェクトが不健全になる例は示した。
話はこれで終わったはずだが。


それから、0除算をしたとしても
それまでの結果をローカル変数に入れておけば
オブジェクトは健全なままになる。


結局、例外が起きたとき健全かどうかは
例外の種類を変更しただけで解決する問題ではなく
その時のロジックで決まるんだよ。
358仕様書無しさん
2011/07/03(日) 23:32:48.43
>>354
>>355

計算結果の場合は>>344に書いたよな。見たのかよ。
359仕様書無しさん
2011/07/03(日) 23:35:46.04
>>356
じゃあこの例で、どの時点で不正だったか特定してみ。

try
{
  frameVector.1sub(sourceVector);
  frameVector2.sub(sourceVector);
  frameVector3.sub(sourceVector);

  frameVector4 = frameVector3 / frameVector1;
  frameVector5 = frameVector3 / frameVector2;

  frameVector6 = frameVector4 / frameVector5;

  return frameVector6;
}
catch(・・・禁止されたゼロベクタ・・・)
{
//図形が成立していないエラー
}
360仕様書無しさん
2011/07/03(日) 23:36:10.35
>>357
だからそのオブジェクトは破壊されるんだって。
なんで全体で捉えられないの?

try
{
    Example example = new Example();
    example.>>351の処理();
}
catch(略)
{

}
361仕様書無しさん
2011/07/03(日) 23:38:05.52
>>360
お前、間抜けかw

>>351はお前が言うNoZeroなんたらを使った場合だぞ。

0除算例外を0代入例外にしたところで
壊れるって最初から言ってるだろw
362仕様書無しさん
2011/07/03(日) 23:38:58.88
>>359
int i;
try
{
for(i=0;i<frameVector[i].length;++i) frameVector[i].sub(sourceVector);
{
catch(・・・禁止されたゼロベクタ・・・)
{
//図形が成立しんていない i番目の座標が異常
}
363仕様書無しさん
2011/07/03(日) 23:39:57.26
>>362
とんちかよw


全部一行につなげて書けば、
どこの行かはすぐに分かりますってかwwww
364仕様書無しさん
2011/07/03(日) 23:42:30.58
>>362
コード書き換えんなよ。
365仕様書無しさん
2011/07/03(日) 23:45:19.10
コード書き換えて、エラーの箇所を示すための変数を作って
いいなら0除算だって、どこの場所でエラーが起きたか分かるよな。

ここまで頭が悪い頑固爺は初めて見た。

int i;
try
{
for(i=0;i<value[i].length;++i) 100 / value[i]
{
catch(・・・禁止されたゼロベクタ・・・)
{
//i番目の値で0除算エラー
}
366仕様書無しさん
2011/07/03(日) 23:51:55.20
>>361
そうですね。但し影響範囲は特定できる。
その情報はNoZeroが出した例外に入っているからね。
引数を書き忘れてたが、この引数自体は破損していないことが確定できる。
もちろんsource自体は、Exampleのオブジェクトに大しては毒だが、
新たなエラーの引き金にはならないことは解る。
例えばエラーメッセージとしてsourceの中身を参照する分には問題ない。

Example example = new Example();
example.>>351の処理(source);

>>363->>364

元がおかしいだろうが。なんで名前の一ベクトルが大量にあるんだよ。
その場合配列しか無いだろ。
仮に名前のついた配列が2本あったらその1個1個でtry-catch書くわ。
367仕様書無しさん
2011/07/03(日) 23:53:20.75
> その情報はNoZeroが出した例外に入っているからね。

同じ情報が0除算例外にも入っている。

わかった?
368仕様書無しさん
2011/07/03(日) 23:53:35.97
>>365 それがやりたいんならやればいいんじゃない?
意味合いが解ってて絶対ゼロが来ないと解っててもやってりゃいいんじゃない?
369仕様書無しさん
2011/07/03(日) 23:55:20.33
話をまとめるとだな。

0除算例外か否かは全く関係なく、
エラー処理のロジックで例外時のオブジェクトの状態が決まるし、
また、エラー処理の作り込みのレベルで、どこまで詳細な情報を
取得できるかが決まるってことだよ。

いい加減気づけ。0除算かどうはは本質的に全く関係ないと。
370仕様書無しさん
2011/07/03(日) 23:55:41.57
>>367 具体的にどうぞ。
例えば、exampleが図形で「図形で異常が起きたという例外」が発生すれば、
source側は無事だと解る。じゃゼロ除算の例外でsourceが無事であることをどうやって知るのかな?
371仕様書無しさん
2011/07/03(日) 23:56:08.42
>>368
で、計算結果が0にならないということは
どうやって保証するんだ?
372仕様書無しさん
2011/07/03(日) 23:57:40.71
>>370
お前こそ具体的に答えろよ。

exampleが図形で「図形で異常が起きたという例外」が発生すれば、
source側は無事だとなぜ言い切れる?

373仕様書無しさん
2011/07/03(日) 23:57:49.98
>>369 まとめるのはいいが、元々は >>291 は無理って話だったんだけどね。
374仕様書無しさん
2011/07/04(月) 00:00:02.02
そもそもsourceってどのコードの話だ?
375仕様書無しさん
2011/07/04(月) 00:00:23.42
>>373
なにが無理なのか具体的に答えたら?
376仕様書無しさん
2011/07/04(月) 00:01:12.35
>>372
「図形が異常で起きたという例外」の仕様がそういう例外だからだ。
IOExceptionがオーバーランが原因で発生することがあるか?
問題の範囲は特定できるんだぞ。

逆にゼロ除算。まぁ別にnullぽでもいいがそっちにそういう仕様はあるか?
377仕様書無しさん
2011/07/04(月) 00:02:48.69
>>373
ん?

0除算が発生したときに、

「0除算が発生しました」とダイアログボックスを表示することは可能だし、
どうようにそれをファイルに保存すればログに記録できるし。

スタックトレースなら普通に出力されるし、
GUIアプリ、ウェブアプリで、0除算が発生しましたとでるが
アプリ自体は終了しないことはたくさんあると思うが?
378仕様書無しさん
2011/07/04(月) 00:04:36.13
>>375 さんざん書いたよな。

>>294
>でも1つでも出力があったり、ゼロ除算を発生させる可能性のある式が露出してたら、
>例外処理すら失敗する可能性がある。そもそも、ゼロ除算が発生する箇所が
>最初から解ってるなら、ゼロ除算を発生させないように書けるはずだしね。

とか

>>308
とかさぁ。
379仕様書無しさん
2011/07/04(月) 00:05:16.02
>>376
例外自体に、オブジェクトの状態を変更しませんと
定義することはできんぞ。

同じ例外を出したとしても、その例外を発生するまでのロジックで
オブジェクトの状態を壊すかどうかが決まるんだからな。

「このメソッドで例外が起きてもオブジェクトの状態を変えません」と書かれていれば、
0除算例外がでたとしても、ほかの例外と同じく、状態を変えないという仕様だ。
380仕様書無しさん
2011/07/04(月) 00:06:26.08
>>377
スタックトレースをユーザーに見せるの?
あと、sourceの健全性は解らないだろそれじゃ。

sourceってのは>>366で出てくる引数のことな。
381仕様書無しさん
2011/07/04(月) 00:06:36.12
>>378
それのどこが、

「0除算時にダイアログボックスを表示することが不可能(等)」という
理由になると言うんだ?
382仕様書無しさん
2011/07/04(月) 00:07:38.97
>>388
> スタックトレースをユーザーに見せるの?

お前は実務経験無いのか?

スタックトレースをユーザーに見せるかどうかは、
アプリの仕様しだいだろ。

ちなみに実際に見せてるアプリは多いぞ。
-vオプションとか-dオプション付けたら表示するものもある。
383仕様書無しさん
2011/07/04(月) 00:09:01.04
>>380
366の引数?

それ、例外が発生したら壊れるよ。
壊れるようなコードを書いているからね。

で?
384仕様書無しさん
2011/07/04(月) 00:10:11.51
繰り返すが、例外の種類で
オブジェクトを壊すかどうかなんて決まったりはしない。

例外発生時にオブジェクトを壊すかどうかは、ロジックで決まる。

同じ例外を出したとしても、その例外を発生するまでのロジックで
オブジェクトの状態を壊すかどうかが決まるんだからな。

「このメソッドで例外が起きてもオブジェクトの状態を変えません」と書かれていれば、
0除算例外がでたとしても、ほかの例外と同じく、状態を変えないという仕様だ。
385仕様書無しさん
2011/07/04(月) 00:12:32.10
やっぱり0除算をCPU例外の0除算と
勘違いしている馬鹿ではないだろうか?


ぜんぜん違う。0除算はほかの例外と全く一緒。
0で割ったときに発生するというだけで
得られる情報も、オブジェクトの状態も
全く変わらない。
386仕様書無しさん
2011/07/04(月) 00:16:24.23
え? 0除算が発生したら
その時点でオブジェクトが壊れるんじゃないの?
たとえば、全く関係ないプライベート変数の値が変化したり。

って本気で思ってそうw
387仕様書無しさん
2011/07/04(月) 00:18:10.75
>>381
んな事いってないだろ。「0除算が発生しました」という無能の極みみたいなメッセージ出すだけならもんだいねぇよ。
それより、健全なオブジェクトと壊れたオブジェクトを判別できない事。なんかい同じ事を書かせんだよ。
問題が発生したオブジェクトが特定できないと、どれが壊れてるか解らないまま処理を継続する事になり、
多少処理する例外処理も失敗するわ、健全なデータも判別できないから、健全なデータも破棄する事になるわ問題が発生するから処理継続は無理と書いてる。
388仕様書無しさん
2011/07/04(月) 00:19:22.94
>>382
デバッグ機能はともかく、エラーメッセージ替わりにユーザーに見せるのは最悪だけどな。
389仕様書無しさん
2011/07/04(月) 00:40:16.35
>>384
そうかもね。じゃ変更する場合はどうなるんだい?

>>385
 ゼロ除算やら割り込みが問題じゃないんだよ。
10箇所で発生する例外をまとめて捕まえて、
10箇所のうちどれが壊れてんのか、それがどこに影響してんのか
特定できない状態で例外処理やってるってのがおかしいって話。

>>386
 >>308
390仕様書無しさん
2011/07/04(月) 00:45:44.10
じゃ極論しよう。
・壊れたオブジェクト
・無事なオブジェクト
この2種類を判断できない状況で処理を行うな。以上。
391仕様書無しさん
2011/07/04(月) 00:55:49.20
>>389

ん? >>308がどうかしたのか?
ロジックによってオブジェクトが壊れるかどうかが決まる
0除算例外にだけ特別なことは何も無い。
そうだよな?
392仕様書無しさん
2011/07/04(月) 00:57:08.47
>>391
そうだよ。
・壊れたオブジェクト
・無事なオブジェクト
この2種類を判断できない状況で処理を行うな。って話だよ。
393仕様書無しさん
2011/07/04(月) 00:58:31.28
>>387
例外発生時に発生する副作用が特定できるように、
例外安全性を意識した設計と文書化を行いましょう。

それができてない前提であれば、あなたの言うとおりかもしれません。
でもそれは例外という機能による不可避な問題ではないのです。
394仕様書無しさん
2011/07/04(月) 00:59:40.99
>>391
あ〜ロジックによってってのはちょっと誤解があるな。
ロジックによって壊れないことが保証されている場合は、そのとおり。
ロジックによって壊れるかもしれない場合は、例外で判断するしか無い。
395仕様書無しさん
2011/07/04(月) 01:00:02.46
もう一点、この問題はエラー通知方法に例外を使った場合にのみ発生するものでもありません。
396仕様書無しさん
2011/07/04(月) 01:01:00.44
>>390
当たり前w
それをお前は例外の種類で区別できると
言っていた大馬鹿者ってだけだ。

ロジックの途中で例外が発生した時、オブジェクトが壊れるかどうかは
ロジックの内容できまるのであって、例外で決まることはない。

たとえ0除算が起こったとしても、それまでの処理の結果を
ローカル変数を使うなどしてオブジェクトを変化させていなければ
オブジェクトが壊れることはない。

また、他のどの例外が発生したとしても、その例外が発生するまでの間で
オブジェクトの状態を変化させていれば、オブジェクトは壊れる。
たとえば、NoZeroObjectに0を代入する前に、オブジェクトの状態を変化させていれば
当然0を代入して例外が発生すると、オブジェクトの状態は壊れている。
397仕様書無しさん
2011/07/04(月) 01:03:24.86
> ロジックによって壊れるかもしれない場合は、例外で判断するしか無い。

無理。こういうコードがあったとき、例外の内容を見て
壊れているかどうか判断することは不可能。


void func() {
 try {
  this.lock = true;

  任意の例外

  this.lock = false
 } catch (任意の例外) {
 }
}
398仕様書無しさん
2011/07/04(月) 01:04:46.87
やっと話が集約してきたな。
0除算とは関係ない話だと
最初に行ったとおりさ。
399仕様書無しさん
2011/07/04(月) 01:08:49.38
まとめるとこうか。

1.
・壊れたオブジェクト
・無事なオブジェクト
この2種類を判断できない状況で処理を行うな。

2.
 ・ロジックによって壊れないことが保証されている場合は、そのとおり。
 ・ロジックによって壊れるかもしれない場合は、無事かどうかを例外で判断するしか無い。
健全なオブジェクトを判断するには、例外の判別が必要。
400仕様書無しさん
2011/07/04(月) 01:10:54.22
>>398 そうだな。もともと >>291がおかしいって話でボヤけてたが本体がみえてきたな。
401仕様書無しさん
2011/07/04(月) 01:11:34.95
>  ・ロジックによって壊れるかもしれない場合は、無事かどうかを例外で判断するしか無い。
あ、これは訂正すべきだな。

ロジックによって壊れる場合、例外を見たところで
無事かどうか判断できない。
そもそも「ロジックによって壊れる場合」は壊れるに決まってるかw
402仕様書無しさん
2011/07/04(月) 01:14:21.27
>>400
おかしいという根拠は
最後まで出てないと思うがw

実際に、0除算例外が起きたときに
ダイアログにそのことを表示するコードはかけるし。
その証拠としてはこのコード。

class Sample implments Interface
{
  public void setValue(int value){・・・}
  public int getValue(){・・・}

  public void exampleMethod()
  {
    try
    {
      Example example = new Example();
      example.Method(this);
    }
    catch(・・・ゼロ除算キャッチ・・・)
    {
      ダイアログ表示("0除算が発生しました");
    }
  }
}
403仕様書無しさん
2011/07/04(月) 01:15:30.50
0除算に限らず、任意の例外(0除算含む)が発生したときに
そのことをログに記録するなんてことは
普通に行われているよ。
404仕様書無しさん
2011/07/04(月) 01:19:46.49
>>397
例外はランダムじゃないから判断できるだろ。

void func(Source source)
{
try
{
int value = 0;
・・・処理・・・
source.add(value);//add内で例外が発生した場合、sourceは破損。
}
catch(・・・funcが所属するオブジェクトで発生した例外・・・)
{
//・・・funcが所属するオブジェクトが壊れた例外を出す。
}
}
受け取る側は、funcが所属するオブジェクトが壊れた例外かそうでないかで、
sourceがまだ健全であることを判断できる。もちろんaddが行われてないんで
その分結果が違うが。source自体に変化が無いことは解れば十分。
405仕様書無しさん
2011/07/04(月) 01:20:10.33
結局、>>291に難癖つけたやつが
的はずれなこと繰り返してただけじゃねーかw
406仕様書無しさん
2011/07/04(月) 01:21:20.52
>>402
それを全ての割り算に書くならねぇ・・。っていう話でNoZeroとか出てきたんだけど今更もどるのか、あの話に。
407仕様書無しさん
2011/07/04(月) 01:22:41.97
>>404
だから判断できるのは例外ではなく
そのロジック限定のことだろ。

ロジックを見ることなく、例外だけで判断できるというのなら
そのロジック隠した。このロジックで例外が発生したとき
壊れないと言い切れる根拠は何だ?

void func(Source source)
{
  try
  {
    ・・・処理の内容は秘密・・・
    例外発生
    ・・・処理の内容は秘密・・・
  }
  catch(・・・funcが所属するオブジェクトで発生した例外・・・)
  {
    //・・・funcが所属するオブジェクトが壊れた例外を出す。
  }
}
408仕様書無しさん
2011/07/04(月) 01:23:01.22
>>405
そうだね。全ての割り算に>>291を書くなら的外れだろうね。以下略。
409仕様書無しさん
2011/07/04(月) 01:24:16.57
>>407
 ・ロジックによって壊れないことが保証されている場合は、そのとおり。
 ・ロジックによって壊れるかもしれない場合は、無事かどうかを例外で判断するしか無い。
410仕様書無しさん
2011/07/04(月) 01:27:20.50
>>406
> それを全ての割り算に書くならねぇ・・。
何のために?

411仕様書無しさん
2011/07/04(月) 01:28:29.39
>>409
だから、例外を見ただけでオブジェクトが壊れているかどうかを判断することは
不可能だってばw

どういう理屈で判断できるのか
説明してみ。

どうせこのロジック(メソッド)では壊れないと
書いてあるからが答えだろ。
ほら例外の種類ではない。
412仕様書無しさん
2011/07/04(月) 01:32:00.11
一体なんのためにすべての割り算に例外を書くのか理解出来ない。

例外処理は一箇所にまとめることが可能なのを知らないのだろうか?
そのまとめた例外処理コードから、例外が起きた詳細な情報を
取得できることを知らないのだろうか?

例外をキャッチするだけの人だと、自分で詳しい例外を作って投げるという発想がないのかな?
413仕様書無しさん
2011/07/04(月) 01:36:58.34
>>410
>>412

ほい>>399

>>411
ほい>>404

「funcが所属するオブジェクトが壊れた例外」がfuncが所属する
オブジェクトが壊れた時にしか出ないことを仕様として決めてる限り明らかじゃん。
414仕様書無しさん
2011/07/04(月) 01:38:10.33
>>413
さっきから論破されたリンクばっかり出すなよw
415仕様書無しさん
2011/07/04(月) 01:39:41.00
> 「funcが所属するオブジェクトが壊れた例外」がfuncが所属する
> オブジェクトが壊れた時にしか出ないことを仕様として決めてる限り明らかじゃん。

うん、だからロジックによって決まると言うことでしょうがw

もしその例外を俺が作ったロジックから投げたとして
例外を見れば、オブジェクトが壊れないと判断できるか?

実際に可能なことだぞ。俺が作ったロジックから
その例外を投げることは。
416仕様書無しさん
2011/07/04(月) 01:40:52.44
> 例外をキャッチするだけの人だと、自分で詳しい例外を作って投げるという発想がないのかな?

まさにこれかw

例外をキャッチするだけだから
自分で投げることを想定していない。
417仕様書無しさん
2011/07/04(月) 01:44:52.63
>>416
>>404で投げてんじゃん。
418仕様書無しさん
2011/07/04(月) 01:47:19.02
論破した、と必死に主張する奴に限って...
419仕様書無しさん
2011/07/04(月) 01:49:58.07
>>411
そういや、そうだよ。メソッドの仕様に書いてあるからだよ。うんそのとおり。

・ロジックによって壊れるかもしれない場合は、無事かどうかを例外で判断するしか無い
がよく解らないメソッドから出てきても例外だけで判断できると解釈されたんなら誤解だ。

どのオブジェクトが壊れたとき、どの例外が発生するかはメソッドの仕様で決まってる。
だから、どのオブジェクトが壊れたか判断できると書いたほうがただしかったか。
420仕様書無しさん
2011/07/04(月) 01:54:16.95
 俺は、筋の通った間違いの指摘は、認めてるつもりだが、ここぞと同じ事を
言って掛かってくるやつ多いな。単に論破したいだけのヤツが多いんだろうか。
421仕様書無しさん
2011/07/04(月) 02:02:38.04
俺様が認めてやってる感ぶりぶりで素敵!
422仕様書無しさん
2011/07/04(月) 02:07:07.24
>>419
また自分の言葉を訂正したな。

結局お前が言っていることは何一つ
正しくなかったってことじゃねーかw
423仕様書無しさん
2011/07/04(月) 02:08:22.06
>>291は正しかったってことか。
結局否定できなかったもんな。
424仕様書無しさん
2011/07/04(月) 02:16:17.89
>>422 訂正ねぇ。したよ。言い回しが違うだけでいってることは他の人と同じよだったから。
内容は>>404に書いたものと変わってないけど。

>>423
>>291を全ての割り算に書からないなら

・壊れたオブジェクト
・無事なオブジェクト
この2種類を判断できない状況で処理を行うな。

が守れないよねって話を刻々と続けてきたと思うけど。
425仕様書無しさん
2011/07/04(月) 02:19:34.52
>>424
誤解をまた生みそうなんで訂正。

>>423
・壊れたオブジェクト
・無事なオブジェクト
この2種類を判断できない状況で処理を行うな。

を守るには、>>291の方法だとtry-catchを全ての割り算に書かなきゃならないよね。
426仕様書無しさん
2011/07/04(月) 02:19:48.43
>>424
だからすべての割り算に書く必要はないんだってばw
例外処理はひとつにまとめられるの。

そして一つにまとめたところで、
ローカル変数に途中の処理結果を入れていれば
どこで例外が起きても、オブジェクトのの完全性は保たれるんだってば。
427仕様書無しさん
2011/07/04(月) 02:28:15.42
> を守るには、>>291の方法だとtry-catchを全ての割り算に書かなきゃならないよね。

なんで?
428仕様書無しさん
2011/07/04(月) 02:34:32.55
>>426
double scale = 0;
try
{
point.x /= scale;
point.y /= scale;
}
catch(・・・)
{
//scaleは不正
}
こういうのだったら当然割り算度に書く必要ない。
そういう話じゃないわなぁ。

try
{
int a,b;
a /= scale;
b /= scale;
this.a = a;
this.b = b;
}
catch(・・・)
{
//scaleは不正
}
こういう話なんだろうか。
thisの健全性が高くなるのはたしかだね。
429仕様書無しさん
2011/07/04(月) 02:40:16.05
いつまで続けてんだよ
>>92はだいぶ以前からスレに沸く見当違いさんだから触るな
初レスとか嘘ついたり、もう来ない宣言のあと当たり前に自演したりとか、相手するだけ無駄だぞ
430仕様書無しさん
2011/07/04(月) 02:43:09.78
>>428
はぁ・・・。確かというか、例外が発生する可能性があるコードの前、
つまり関数の最初に引数をチェックして、それでOKならそれでいい。

だが引数チェックしたところで、すべての例外が起きなくなるわけじゃない。
むしろゼロ除算例外のように、引数チェックで例外が発生しないことを保証できることなんてまれ。
(つーか、ゼロ除算例外だって計算結果が0になってその値で割れば発生するから引数をチェックしたところで完璧ではない)

だから例外を発生させないようにするという考えは現実的ではなく、コード上のどの箇所で例外が起きても、
問題ない作りにする。これは0除算の限った話ではない。すべての箇所で同じような作りにする。

で、コード上のどこで例外が発生したとしても、問題ない作りにするには、
オブジェクトの状態を変えるコードは処理のなるべく後のほうでやって
途中はローカル変数のみを使ってコードを書く。
これはある程度実戦経験積んだ人にとっては当たり前に書くコードなんだが・・・。

ため息しか出ないよ。こんな初歩中の初歩をしらんやつだったとはな。
431仕様書無しさん
2011/07/04(月) 02:44:31.23
>>429
ゼロ除算やら割り込みが問題じゃなくなってるんだけどOkey?
432仕様書無しさん
2011/07/04(月) 02:48:28.28
ついさっきまで、ゼロ除算だと・・・って
なんかゼロ除算だけに存在する問題が何かがあると
考えていた間抜けがいたけどなw
433仕様書無しさん
2011/07/04(月) 02:59:50.36
>>430 こっちの要点は健全なオブジェクトと壊れたオブジェクトを判別し、
安全な状態で処理または、例外処理を継続すること。
まぁ、そもそも保全に対する方向性が違うんだろうね。

俺だって"割り算毎に例外チェック"すんのは馬鹿げてると思う。
でも>>291の方法だとそうは行かない。だから、それを避ける手段を
NoZeroの流れと、メソッドの仕様と例外の区別を利用する流れで提示した。
まぁ、方向性が違うから他の人には納得する点は一切なかったらしい。

10個20個例外が発生する箇所をまとめてキャッチしたらどれが壊れてるのか解からん。
根本的にはゼロ除算は関係ないし、Nullポだろうが、
SQLExceptionだろうが、IOExceptionだろうが同じ話だったんだけどな。

それじゃ消えるよ。めんどうだから。
434仕様書無しさん
2011/07/04(月) 03:08:59.06
>>433

> でも>>291の方法だとそうは行かない。だから、それを避ける手段を
> NoZeroの流れと、メソッドの仕様と例外の区別を利用する流れで提示した。

それじゃ無理。あくまで関数の最初でチェックできることにしか対応できない。
途中の計算で値が0になったらどうする?
どっちみち処理の途中で例外が発生することになる。

処理の途中で例外が発生することを防ぐことは不可能なのだから、
その場合でもオブジェクトが壊れないようにするには処理の途中でオブジェクトの状態を
変更しないようにローカル変数を使う。普通はそのようにコードを書く。

どうしてもそれが不可能な場合のみ、catchかfinallyで復帰処理を書く。
それがコーディングのセオリーだ。

> 10個20個例外が発生する箇所をまとめてキャッチしたらどれが壊れてるのか解からん。
わかる。例外オブジェクトにどこが壊れているか情報が格納されている。
どうしてもわからないのなら、自分で情報を追加すればいいだけの話。

結局お前は、技術力不足により意味のない俺俺解決方法を思いつき
それを偉そうに語っていただけ。お前の保全に対する方向性が斜め上を向いていただけの話。
実戦経験がないから、変な方法を思いつく。頭が良いのではなく頭が悪い証拠だ。

> それじゃ消えるよ。めんどうだから。
できれば今後一切出てくるな。初心者の相手は面倒だ。
435仕様書無しさん
2011/07/04(月) 03:12:03.61
>>434
>>219さんお疲れ様。あんたもお帰り。
436仕様書無しさん
2011/07/04(月) 03:12:47.71
>>435
さっさと消えろよ。自分で言ったんだろ。
437仕様書無しさん
2011/07/04(月) 03:17:19.52
>>436
お前の敵はひとりかよw

>>434>>433もどっちも実践あるとは思えんから言っただけだ。
両方帰れ。
438仕様書無しさん
2011/07/04(月) 03:18:54.48
>>437
お前が一番実践なさそうだな。

何一つまともなことを言ってなさそうだからな。
お前の発言はどれかね?w
439仕様書無しさん
2011/07/04(月) 03:23:56.55
>>438
おれこの口論にゃ参加してないよ。
話を聞き出すならともかく、自分の意見を相手に
押し付けあうなんてバカバカしいじゃん。
社会人なら解るはずだけど?
だから、どっちも実践あるとは思えないって書いたの。
440仕様書無しさん
2011/07/04(月) 03:25:42.33
> おれこの口論にゃ参加してないよ。

うんだろうね。

なにも発言せず、偉そうな態度。
よくあるパターンだw
441Perl忍者
2011/08/01(月) 15:04:01.29
最初から例外でないようにかけばいいじゃんバカだな
本当にバカだな
書く必要ないさっさと消えろ
442仕様書無しさん
2011/08/01(月) 15:06:01.56
え?
443仕様書無しさん
2011/08/01(月) 22:00:14.89
真性の阿呆はそっとしておいてあげてください
444仕様書無しさん
2011/08/04(木) 00:01:13.40
>>441
こういうアホが理解できないんだよな
445仕様書無しさん
2011/08/05(金) 12:44:35.98
久々にスレ覗いたけど前に比べて活気がないね
446仕様書無しさん
2011/08/05(金) 15:35:07.55
適度な阿呆が独自論展開しはじめると盛り上がるけどねえ
ここまで酷い阿呆だとオモチャにもならないんで
447仕様書無しさん
2011/08/06(土) 12:31:57.67
餓鬼にはオモチャを与えないとな。
448仕様書無しさん
2011/08/08(月) 01:50:35.49
例外理解してない人は、例外意外もわりと理解してないな
449仕様書無しさん
2011/10/14(金) 23:15:27.49
いい加減な集約例外とか、統一性のないログ処理とか
もうやだ!
450仕様書無しさん
2011/10/26(水) 02:30:34.39
例外とかあんま関係ないけど、
条件が間違ってたとか、明らかにコーディングミスで
落ちてる場合って客にどういうメッセージ見せるべきよ?

「予期せぬエラーが発生しました」「システムエラーです」っつうのも、
明らかにうちのミスであって、システム的に未知の異常が発生した
訳じゃないから言い訳がましいように感じる。
451仕様書無しさん
2011/10/26(水) 02:33:36.26
パスワードが違います
452仕様書無しさん
2011/10/26(水) 03:33:40.91
もういちどやりなおしてください。つづくばあいはれんらくしてください。的な。
453仕様書無しさん
2011/10/26(水) 07:53:43.15
もう一度やり直しては不味くね?
バグで有る以上、
バグかどうかは判断できてもどこで発生したかはわからんだろ。
事態を深刻にする可能性があるぞ。
454仕様書無しさん
2011/10/26(水) 09:39:25.86
仕様上予期してないわけだし、システムがエラーなんだからそのままでいいだろ
だいたい、コーディングが悪いのかほんとに未知のエラーなのか判断できるなら対策しろよ
455仕様書無しさん
2011/10/26(水) 19:00:18.38
>>454
テスト漏れな異常引数とか配列のコレクションのオーバーランとか
すぐバグだと解るけど、対策なんてできるか?
456uy
2011/10/27(木) 01:33:42.33
ひとついわせてもらうと

こんなスレが伸びちゃうのが 日本のレベルの低い由縁


ありえねーだろ・・・・・・・  なんで理解しない
457仕様書無しさん
2011/10/27(木) 02:57:11.91
kardとか書いちゃうヤツが、ずいぶんよその国に詳しいんだな。
458仕様書無しさん
2011/10/28(金) 03:12:22.82
触るときは本当に反応してあげる価値がある相手かを考えてから触ろう

技術不足でも、想定できてなかったら想定外のシステムエラー
もみ消したりして続行されるほうが追々困るので、その原因がバグであってもなんであっても
想定してない以上、中断して通知する必要あるよ
459仕様書無しさん
2011/10/28(金) 21:00:21.08
それは解るんだが問題はどう通知するかなんだよ。
予期せぬエラーと報告する場合で、エラーの発生頻度が低いと
ユーザーが無視可能性があるでしょ。バグだったら取り返しが
つかないことになる前にさっさと報告してもらったほうがいい。
なので、やんわりと「バグだよごめんぬ。さっさとバグレポート送ってね。」的な事を
ユーザーに伝えたいんだ。それをどう伝えるべきかいい方法が思いうかばん。
460仕様書無しさん
2011/10/28(金) 21:01:37.11
>>459
このバグを報告したら1万円あげますって書けばいい。
461仕様書無しさん
2011/10/29(土) 00:35:07.80
>>459
例えば給与会計のシステムで

 誰かの勤務時間登録でエラーが出たらガン無視してExcelで手打ちする

みたいなオモシロイことをしやがる会社はある。
ユーザーもアホではないんで、なんとか凌ぐもんだよ。
あまり神経質になりすぎてもこっちが辛いだけでな。

まぁ今のところは本当の意味での例外、例を挙げれば

 ソフトウェア以外の部分で生じたトラブル(LANケーブル断線とか、ODBCとかJDBCの設定ミス)

は例外扱いくらいだ。
DBのコネクション張れないとか、あるはずのJPGファイル読めない(ユーザーがファイルいじってね?)とか、そんなの。
462461
2011/10/29(土) 00:37:03.64
Excelで手打ちして



Excelで手打ちして上司に『ごめんこの人たちデータ入りませんでしたてへっ☆で済ます

の意味だが。不思議に給与を振り込んでくれる素敵な上司に乾杯。
463uy
2011/10/29(土) 00:59:28.20
>>461
お前みたいなゴミがいるから腐敗していくんだろうな

身の程を知れクソゴミ
464仕様書無しさん
2011/10/29(土) 01:02:18.53
このニートさんどんだけ暇なの
465仕様書無しさん
2011/10/29(土) 01:06:33.96
>>463
どーでもいいから資料出せよ。別スレで出せって言ったろ?

ここで書いてもらっても構わん。
466仕様書無しさん
2011/10/29(土) 03:35:05.93
ソースだせ→スルーして他スレ荒らしは典型パターン
逃げるか火病るかで話にならないので誰もソース出せとは言わなくなったぐらい
467仕様書無しさん
2011/10/29(土) 14:12:59.14
一々触るやつも同類まとめてスルーしとけw

>>459
一度納品して、検査がおわっても見つかってない不具合であれば、あとは保守の内容次第だと思う
管理者の日常業務にログチェックを入れてあればそのうち見つかる
定期的にログチェックをやってるなら、エラーが出てたらその時点で対応検討できるからな
一度作ったら放置のような客のとこでは、そういうのは無理だし、そこは割り切れ

まぁ、大きな問題になると困るようなシステムならある程度の管理者がつくから、
ちゃんとログの内容チェックしてくれると思うよ

全体仕様に関われる案件であることが前提だけど、
エラー時のログファイルを日時でファイル名分けた別ファイル出力するようにしておくとかやると
普段あまりログの確認をしないところでも、エラーが見つけやすくなるから、そういう手もある
あとはログチェックから不具合調査依頼を出すための資料収集の手順書を作ってあげたりすると
必要な情報が取りやすくなるので、不具合起きるとマズそうな案件とかでは重宝するかも?

別ファイル化は前後の記録が取れないから、面倒なこともあるので一長一短だけどな
468仕様書無しさん
2011/10/29(土) 14:17:08.57
あとはメール通知とかって手もある。大きなシステムとかだとログも膨大だから
エラーや警告が出てたら通知メールを飛ばすって仕組みを用意してやる
もちろん、メールがこけることもあるので、定期的な死活監視用の通知も必要になる
大きなお仕事とかだと、そんなのもあると思う

いまやってる仕事は、業務エラーもシステムエラーも一緒くたに
Exceptionでキャッチしロギングする過去の遺産の糞F/Wの上に乗っかってるから
ユーザーが入力ミスしただけでスタックトレース吐かれて、ログチェックどころじゃねぇけどな!

例外を正しく使えないプログラマが多いね
469仕様書無しさん
2011/10/29(土) 20:32:10.48
>>455
そんなイラつくなよw
ちょっとキチガイなやつだ
そっとしておいてやれ
470仕様書無しさん
2011/10/29(土) 20:32:31.67
いらん安価いれてしもた
471仕様書無しさん
2011/10/30(日) 02:33:19.74
>>469
例外を正しく使え!
472仕様書無しさん
2011/11/06(日) 02:12:22.99
ふぅ。やっぱりこの結論に達するよねw


http://d.hatena.ne.jp/ryoasai/20110221/1298297258
システム系の例外は実行時例外+AOPでハンドリングするのがベスト
インフラ層のチェック例外はやはりJavaのBad Partだと思う


473仕様書無しさん
2011/11/08(火) 01:51:45.28
運用環境で発生する可能性が常にあり、なんかしらの処理を行う必要があるものなら
どのみち補足するし、別に検査例外で構わんとは思うけどな
ただ、フレームワークの多くのメソッドに throws Exception とかやられるくらいなら、
全部実行時例外にしてくれよって毎度思う
474仕様書無しさん
2011/11/10(木) 18:48:28.56
Android触っててJavaの割には妙にストレスが少ないと思ったら
ライブラリがほとんど検査例外使ってないんだな
475仕様書無しさん
2011/11/12(土) 18:00:55.39
>>474
Androidは組み込みだからいつでも落ちますって前提。
中身ほとんどCで、システムのベースはC++だし。
476仕様書無しさん
2011/11/12(土) 18:24:29.39
JNIでC++アクセスできるなら、最初からC++ベースだけでもアプリ組めるようにしてほしいわ。
軽快に動くメディアプレーヤーつくろうとするとJavaとの通信が邪魔すぎる。
477仕様書無しさん
2011/12/19(月) 10:01:16.70
趣味マなんだけど例外って重要だと言われる割に
書籍とか探しても触りしか触れられてる物がおおくて正しく使えてるのか不安にはなる

まあ、趣味レベル何でとにかく動けば良いんだけどね、なんか気持ち悪い感じになる
478仕様書無しさん
2011/12/19(月) 16:01:03.31
例外だけで一冊にまとまってる本あるだろ。
479仕様書無しさん
2011/12/19(月) 18:46:25.43
7スレ目でまだテンプレすらないぞ
先に言っておくが俺は作らないぞ
480仕様書無しさん
2011/12/25(日) 12:53:29.53
>>478
あるの、マジで教えて。
481仕様書無しさん
2011/12/25(日) 21:33:28.34
>>478
ワロタw
そんなに複雑な仕組みなんてすてちゃえばいいのになw
482仕様書無しさん
2011/12/26(月) 20:43:58.76
えっ
483仕様書無しさん
2011/12/26(月) 22:54:50.57
だってそんなに複雑ってことはたくさんのバグや不具合を内包してるってことだろ?
484仕様書無しさん
2011/12/26(月) 23:15:42.19
そうだな。CPU捨てちまえ。
485仕様書無しさん
2011/12/26(月) 23:50:50.31
try-catchについて本一冊書いてんじゃなくて、
errnoを含め、例外情報を受け取った際どうしょりするか、
どういう状況は例外状況と判断するか、例外情報とは
どのような情報をまとめるべきかを書いてんだろ、
Exceptional〜とかな。

例外を try catch throw 構文そのものだと思うな。
486仕様書無しさん
2011/12/27(火) 00:56:34.60
>>485
だからそんな複雑なもんはいらねっつーのw
10得ナイフを1000得ナイフにして「ほら、使えるでしょ?ね?ね?」っていってるアフォといっしょだな
487仕様書無しさん
2011/12/27(火) 01:04:59.40
java で throws Exception をみかけるとやる気なくなる
フレームワークの共通処理とか以外で catch(Exception e) を書かざるを得ない状況になるとげんなりする
こういう奴がいる環境だと、ほんと検査例外は邪魔にしかならんな
488仕様書無しさん
2011/12/27(火) 14:27:02.49
何も考えずログ吐いて握り潰しはもっと多い
489仕様書無しさん
2011/12/27(火) 15:05:16.78
ログだけでいいじゃん
何すんのさ
490仕様書無しさん
2011/12/27(火) 19:06:12.13
ユーザー通知したり代替処理したりは普通にやるし、考慮されてなければ確認する
仕様書にないから無視とかやってると、使えないマだなっていうレッテルが貼られるわなぁ
491仕様書無しさん
2011/12/27(火) 19:43:49.09
仕様書にない例外はバグだろ
492仕様書無しさん
2011/12/27(火) 21:13:10.88
>>486
日本語ワカリマスカ〜?
493仕様書無しさん
2011/12/27(火) 21:15:16.81
>>491
例外が仕様書にかいてんのもおかしい話だけどな
仕様書に書いてんのは、ErrorとWarningか復帰方法だろ
494仕様書無しさん
2011/12/27(火) 23:38:16.66
例外は相変わらずよく釣れるなw
>>491←こーゆーなんもわからない奴ってなんで減らないの?
495仕様書無しさん
2011/12/28(水) 11:09:53.00
>>494
たった1行で相手が「なんもわからない奴」って断言できる人間がいるからじゃないかな。
お前にとっては、いつまでも「なんもわからんない奴」だらけだろうよ。1行で判断するんだから
496仕様書無しさん
2011/12/28(水) 13:05:05.36
ケンカ腰になるな
497仕様書無しさん
2011/12/28(水) 17:59:51.67
匿名掲示板なんだから1レスしか書き込まれなかったら
そこで判断するしか無いだろうに
匿名の場において個人は、ひと続きのレスという
一時的な存在にしか見えないんだから
498仕様書無しさん
2011/12/29(木) 20:04:04.72
例外が理解できてない馬鹿は仕様と戦う馬鹿でもある
499仕様書無しさん
2011/12/31(土) 00:07:28.48
エラーはすべて例外にする例外原理主義
慣れると正常系と異常系の処理がきっちり分けられて便利
500仕様書無しさん
2012/01/03(火) 15:59:09.29
例外は東京電力の非常用発電機みたいなもの
想定外です
501仕様書無しさん
2012/01/04(水) 06:19:15.97
>>497
悪いこた言わないから、心療内科池
502仕様書無しさん
2012/01/05(木) 21:09:00.86
IDやIPの類も無しに違う文体、違う内容を書きこまれて
同一人物だと断定できるんだ(´・∀・`)ヘーすごいね
503仕様書無しさん
2012/01/06(金) 02:48:33.88
相変わらずこのスレは痛い子が多いな
504仕様書無しさん
2012/01/07(土) 01:48:46.85
>>502
おまえは一体何を言ってるんだ?
誰が「同一人物だと断定できる」とか、できないとか言ってるんだよ。
脳みそおかしいだろ
505仕様書無しさん
2012/01/07(土) 02:31:16.03
キチガイに構うなよ
506仕様書無しさん
2012/01/07(土) 10:00:14.89
まぁ、「心療内科池行け」としか言ってないわな
それが何を意味するか解釈すんのは人それぞれだけど
507仕様書無しさん
2012/01/07(土) 11:42:01.70
昔からこのスレは頭の弱い子沸いてるんだから、いちいち構うなって
508仕様書無しさん
2012/01/17(火) 22:06:06.17
例外なんて書かねーよ感じろバーカ
509仕様書無しさん
2012/01/24(火) 00:12:02.15
他の要求と矛盾しない限り書いておけよばかw
510仕様書無しさん
2012/01/24(火) 01:11:50.51
例外すら使い分けとかできない奴ってまだ居るの
511仕様書無しさん
2012/03/17(土) 14:29:37.84
あげ
512仕様書無しさん
2012/03/19(月) 09:22:56.05
お前らって時給1000しかもらえNASAそう。
513仕様書無しさん
2012/03/19(月) 21:53:40.51
どうした、何か辛いことでもあったのか?
514仕様書無しさん
2012/03/20(火) 13:04:56.00
その前にお前ら自身が例外な事に気づけ
515仕様書無しさん
2012/03/20(火) 16:48:22.02
それをキャッチできずにスルーしてるからどうにもならんのじゃないか(´・ω・`)
516仕様書無しさん
2012/04/17(火) 23:59:23.72
使えないっていうか、理解してないし理解しようともしないし理解する能力もないっていう、そういうのが多い
517仕様書無しさん
2012/04/18(水) 09:59:04.40
問題押し付けるの止めてくださいというのも多い。
518仕様書無しさん
2012/04/18(水) 10:17:01.96
いやそれは自分に出来ないことを他人に押し付けるのは誰もいい顔しないだろう
519仕様書無しさん
2012/04/18(水) 20:32:22.30
押し付けるとか、そういう使い方をするもんじゃないしなw
処理からするとどう対応するかが決まってない問題とかは例外
処理を呼ぶ側がどう処理するかを決めれるようにするものだしな

同じ対応する異常系を集約しやすいからちゃんと作ってあれば超便利
でも例外理解できない奴は例外==悪い事、程度の認識しかなくて、発生するとふぁびょる
520仕様書無しさん
2012/04/18(水) 20:40:26.10
そんなに複雑な理由じゃなく、単に正しい結果を返せないなら例外だろ。
521仕様書無しさん
2012/04/20(金) 00:46:07.18
職場で例外処理使用禁止になりそうです。
あるできるプログラマーが例外を理解してなくて、
例外の使い方を間違えて、例外が遅くてわかりにくい機能だということにされた。
Googleのコーディングルールに例外を使わないよううたわれていることが致命傷だった。
522仕様書無しさん
2012/04/20(金) 07:01:37.33
>あるできるプログラマーが例外を理解してなくて
できねぇだろそいつ。つかAPIが投げてくる例外どーすんのさ。全部呼び元で握りつぶすのか?
523仕様書無しさん
2012/04/20(金) 10:32:25.50
そんなんが「できるプログラマー」って時点で終わってるので、
とっとと逃げて、トドメのために魚雷ぶちこんでやるのが男の情け、という気がする。
524仕様書無しさん
2012/04/20(金) 14:42:46.35
運用時に例外投げてくれる可能性があるからAPIのはなんとか握り潰して
自分等では使わない方針は俺は賛成

そもそもメソッドの結果なんて成功か失敗か(bool型)で足りるのに
わざわざ返す例外を1つ1つ全部呼び元で対処しなくちゃいけない仕様はおかしい
100箇所でメソッド呼んだら100箇所で同じ対処せなあかんのかと・・・?

使う側がマニュアルみて例外の対処1つ1つ・・・ってその発行した例外が出たときに
何をしなきゃいけないのか知ってるのは間違いなく例外なげた奴のほうだろ?

だったらてめぇのメソッド内でやれよ
外側からできる仕様にしてやっからよ
525仕様書無しさん
2012/04/20(金) 19:48:02.21
その場で復旧できてそこまで共通化する必要があるなら
ラッパーなりヘルパーなり作ればいいだけだろ
なにプログラム初心者でもわかってくれるレベルの事に長文書いてんのw
526521
2012/04/21(土) 07:21:46.87
書き忘れましたが言語はC++なのでAPIが例外を投げてくることはありません。
そのできるプログラマーはちゃんと実力のある人です。ちなみに外人です。
Googleのコーディングルールでも例外禁止だし、
Effective C++の著者Scott Mayerも例外に否定的だし、著名なアメリカ人にも否定派は多いようなので、
例外はちょっとまだ受け入れられていない感じがします。
パフォーマンスの問題とか、挙動を予測できない問題とかは、言いがかりに近い誤解なんですけどねー。
いくら説明しても無駄なので、実績のある著名人の論文でもいくつか出さないと通らないっぽいです。
527521
2012/04/21(土) 07:26:02.60
例外発生時にいちいちキャッチする必要はないでしょう。
例えばシミュレーションプログラムを実行中に0除算が起きた時、適当な値に直して継続させることはマレで、
その計算の一部分または全体をキャンセルしてしまうのが普通では。
つまりcatchはthrowに比べて大幅に少ないはず。
そこのパラダイムシフトに気づかないと例外の利点は理解できないと思う。
528仕様書無しさん
2012/04/21(土) 07:29:52.89
キャンセルするのに例外使うんだろ
で、失敗した時の通知やログ出力にcatchを使う
return のチェーンを置き換えただけ
529仕様書無しさん
2012/04/21(土) 07:33:22.09
>>524
エラーありか、無しかだけが欲しいなら
catch(...){}で捕まえても構わんのだぞ
530仕様書無しさん
2012/04/21(土) 08:47:31.26
まぁたしかにC++ならあんまり例外使いたくない気も。解放し忘れとかやっちゃいそうだし。例外使わなくてもやっちゃうんだけどさw
531仕様書無しさん
2012/04/21(土) 09:42:53.05
クラスきちんと設計できてるなら例外使わないとむしろめんどいケースが多いな
何が楽しくてチェックして結果リターンして、みたいなアホなこと繰り替えさにゃならんのか、ってなるな
それを回避しようと思ったら、例外を使わない前提で
階層構造にはなるべくならないようなアホ設計をやらにゃならんくなる
そして1メソッドの行数がえらいことになるなどが多数出てくる
532仕様書無しさん
2012/04/21(土) 09:47:58.39
ああそうかそういうことか
1メソッドにずらーーーーーと書くようなコーディングルール()な環境だと
例外いらないって考えが生まれるのは理解できなくもないな
533仕様書無しさん
2012/04/21(土) 11:43:54.22
> 書き忘れましたが言語はC++なのでAPIが例外を投げてくることはありません。

間違いです。お前素人ですか?

> 書き忘れましたが言語はC++なのでAPIが例外を投げてくることはありません。

間違いです。お前素人ですか?


> 書き忘れましたが言語はC++なのでAPIが例外を投げてくることはありません。

間違いです。お前素人ですか?


534仕様書無しさん
2012/04/21(土) 11:44:43.06
> 書き忘れましたが言語はC++なのでAPIが例外を投げてくることはありません。

だっせwwww

> 書き忘れましたが言語はC++なのでAPIが例外を投げてくることはありません。

だっせwwww


> 書き忘れましたが言語はC++なのでAPIが例外を投げてくることはありません。

だっせwwww
535仕様書無しさん
2012/04/21(土) 16:54:52.27
環境を何も書いてないから例外を投げないAPIなのかも知れんが、どんなんだろ。
あとはC++といいつつCのライブラリしか使わんとか。んなわきゃないか。
536仕様書無しさん
2012/04/21(土) 17:00:40.89
C++といってもぷち強いCみたいなのも結構あるからな
537仕様書無しさん
2012/04/21(土) 20:52:37.56
C++のnewが例外投げるわけだが。
538仕様書無しさん
2012/04/21(土) 21:09:11.16
C++のコンパイルオプションで切り替えるのでは?
539仕様書無しさん
2012/04/21(土) 23:19:06.87
例外は基本システムエラーだけど
catchして適切に処理を施して続行する時点で業務フローに組み込まれる
540仕様書無しさん
2012/04/21(土) 23:36:32.97
システムエラーじゃなくて
実行時エラー。

実行時にならないとわからないものが例外。
541仕様書無しさん
2012/04/22(日) 00:39:44.40
bad_alloc 受け取ったからって、アプリ側で何が出来るんだろ。
どうせプロセスごと落ちるなら後始末もへったくれもないし。
542仕様書無しさん
2012/04/22(日) 00:42:02.74
> bad_alloc 受け取ったからって、アプリ側で何が出来るんだろ。

エラーログにどこでエラーが発生したか書き込むとか。
543仕様書無しさん
2012/04/22(日) 01:06:39.56
その外人さんってリーナストパーズみたいな
C++はゲロ。低レベル開発はCこそ至上ってタイプのひとじゃないの?
例外投げると、オーバーフローとかthrowされない狭義の意味での
例外処理サボるから糞だと思ってるんじゃね。
多分暗黙の処理とかも大嫌いなんだろう。

>>541
キャッシュ用メモリの解放
応用として不要になってもbad_allocが発生するまでdeleteせず放置とか
544仕様書無しさん
2012/04/22(日) 01:41:01.71
もうなんにもできないくらい追い詰められてるのと
一仕事しようと大きくメモリ確保しようとしたときじゃ
違うだろ
545仕様書無しさん
2012/04/22(日) 02:25:10.99
だよね。
例外だと一律に何も出来ないと
決めてはいけない。
546仕様書無しさん
2012/04/22(日) 05:13:36.09
>>543
個人的にだけど、C言語に極端に意識が慣れてしまうと、gcとか何かを完全に任せちゃってしまう
ようなものって逆に不安でさー。
便利だって意識より、俺の知らんところでこいつ一体なにやってんだろって気になっちゃう。
だから、頭では分かっていても使いたがらないというか。

例外も、自分でちゃんと処理書いてきっちりなにが起き得るのかを分かってて書いてしまいたい
という意識の方が強くて。普通の人ならいちいち書かないで例外任せにするようなチェックも
かいちゃうなぁ。まぁ、newとかで例外起きるとかってのは例外で拾うしかしゃーないけども。
547仕様書無しさん
2012/04/22(日) 05:16:33.31
あ、ごめん。
最後の一文は「catchで拾うかスルーしろ」、のミス。
548仕様書無しさん
2012/04/22(日) 18:44:00.15
>>531
try-catch無い場合は余計階層が増えるんじゃないか?
でないとgoto使わなきゃならんはめになる
549仕様書無しさん
2012/04/25(水) 17:43:08.46
Javaはウンコ。
プログラマーと呼ぶべきかどうかも微妙。
550仕様書無しさん
2012/04/25(水) 21:14:56.60
ほらほら、釣り釣り
551仕様書無しさん
2012/04/25(水) 21:23:28.03
>>549
全面的に同意
552仕様書無しさん
2012/04/25(水) 21:29:15.30
>>551
釣れましたwwwww
553仕様書無しさん
2012/04/25(水) 21:30:57.73
>>549
すこぶる同意
554仕様書無しさん
2012/04/25(水) 21:41:10.97
こんな下らないことで
釣りとかレスの応酬とかするなよw
555仕様書無しさん
2012/04/25(水) 21:43:49.89
>>549
同士
556仕様書無しさん
2012/04/25(水) 22:03:22.31
>>550-555
お前らプロの釣りキラーだなw
557仕様書無しさん
2012/04/25(水) 22:03:31.43
>>549
禿同
558仕様書無しさん
2012/04/25(水) 22:07:27.07
>>549
マンセー
559549
2012/04/25(水) 22:08:56.27
>>558
お前だけは許さない。ぜったいにだ!
560仕様書無しさん
2012/04/25(水) 22:09:51.24
ちょwww なんで俺だけw
561仕様書無しさん
2012/04/25(水) 22:20:34.56
>>549
このレスを見たおかげで
もう医者から治らないといわれ絶望していた
腰痛がなおりました
562仕様書無しさん
2012/04/25(水) 23:46:25.77
Javaもjavaだけど。
今のIT業界がおかしくなったのはJavaのせいじゃないのか?
プログラマーを猿にしたのはJavaのせいだよ。
正直、ホスト出身でもなれるくらいで、現場にいたんだよ。プログラマーも舐められたもんだと思った。

俺はまだC/C++,asmで食べてるけど、この分野は基礎がしっかりしてないと無理。
563仕様書無しさん
2012/04/26(木) 00:02:54.06
IT業界()
564仕様書無しさん
2012/04/26(木) 00:15:33.07
(i)
565仕様書無しさん
2012/04/26(木) 00:21:25.61
COBOL
MSBASIC
VB
Java
デスマ言語の歴史
566仕様書無しさん
2012/04/26(木) 00:34:08.27
>>549
感動したっ
567仕様書無しさん
2012/04/26(木) 07:59:52.15
素人でもできる、とかいう腐った台詞は40年前からある
568仕様書無しさん
2012/04/26(木) 09:12:59.52
あいちーは一気に広まって土方と同じ状態になった

例外すら理解できないような底辺マが多すぎるのは、
技術がないのに技術者枠で身売りされてるのが原因
人売ってるだけで何もしないで中間マージン取ろうとしてる企業が多すぎる
発注元がもっとスキルを持って技術を知り、直接技術者を囲う体制が不足してる

どの道、今のスタンスのままじゃ、競争力がない日本は世界的に置いてかれるのが目に見えてる
悲しい
569仕様書無しさん
2012/04/26(木) 10:22:10.16
士農工商からどう変転したものか、
「工」を社会の最低辺層と考える風潮が死なない限り日本の復活は無理。
そしてそれは、死ななきゃ治らない病気っぽい。

よって希望はない。とか思ってる。俺の死ぬまでは保ってほしいものだが。
570仕様書無しさん
2012/04/26(木) 19:07:49.33
産業革命の労働者と同じ
過酷な環境と長時間労働と搾取

おまえらが教科書に載るんやで
むねあつ
571仕様書無しさん
2012/04/26(木) 22:44:44.70
>>569
一応言っておくがな、

士農工商っていうのは、偉い順じゃねーぞ。
572uy
2012/04/30(月) 13:17:28.76
まだ例外とかやってんだ
573仕様書無しさん
2012/04/30(月) 13:26:52.96
uyか
574仕様書無しさん
2012/04/30(月) 13:29:33.46
さっさと死ねばいいのに
575仕様書無しさん
2012/04/30(月) 14:04:29.25
uyとかまだいたんだ
576uy
2012/04/30(月) 19:10:05.11
いやいやほんと
半年くらいここ見に来なかったけど、
まだ例外とかやってたんだね

オブジェクト指向に関しては、否を唱えるスレも2chに出てきたけど
例外は未だに
577仕様書無しさん
2012/04/30(月) 19:36:07.88
オブジェクト指向に関して否を唱えるスレを
見てきて分かったが、

オブジェクト指向がやっぱり現在一番
使える技術だよ。

例外もかな。

否を唱えている奴らが
こてんぱんにされてるのを見るとね。
578uy
2012/05/02(水) 01:59:26.26
OOに否を唱えてる奴らは
そのOOではない設計手法に名前がついてないんだから議論じゃ勝てないよ

っつーか君、2chのこんなそこら中が底辺PGしかいないような場所で
議論で勝った程度でその決め付けはどうかと思うがね

君の世代では例外も使い続けるだろう
たくさん書いててくれ
それが次の世代の良い失敗例の良い模範となる

人は一度間違えた道を進みはじめても、そこを行き止まりまで行かないと気がすまない生き物だからね
行き止まりまでさっさと行ってくれよ
579uy
2012/05/02(水) 02:03:49.54
OOは現在一番使える技術で間違いはない
万人に使える技術を採用しなければ、会社はアプリケーションを開発できない
俺が言っているのは、「OOの次」を見始めた奴がちらほら2chでも出てきたという事だ
580仕様書無しさん
2012/05/02(水) 02:25:02.16
OOの次なんてものはない。

OOと共に。両方合わさっていく。
581仕様書無しさん
2012/05/02(水) 02:28:37.84
OOは使い方によってはそこそこ使えるぞ。
前もお前に言ったが、間違えた抽象化や命名が混乱させてるから糞なだけで、最強ではないけど、正しく使えばそこそこだよ。
ただし、糞コード書くやつが多い。
糞コードは一目で糞コードだと解る言語の方が、混乱は少なく済む。
考えられてるのかとおもっていろいろ調べて観察した結果クソコードだったら書いたやつ頃したくなる。
582仕様書無しさん
2012/05/02(水) 07:43:58.54
そもそもOOが構造化の延長だからね。

クラスやカプセル化、インターフェイス、隠蔽なんかは構造化と大きく被っている。

OO独自なのはオブジェクト間の関連に関する技術。
UMLやデザインパターンなんかだね。
継承や多態なんかもどちらかといえば構造化より関連に属する部分だろう。

例外は構造化プログラミングの範疇にあるものだと思う。

そういうわけでOOの次がくると言われて20年以上経つけど、それらしいものは未だ出てきてないので、俺が生きている限りは次はなさそうな気がする。
エージェント指向もOOの次だなんておこがましいものだったし。
583仕様書無しさん
2012/05/02(水) 08:43:34.42
あんたが単に「分割して統治せよ」という大原則をわかってないだけ
584仕様書無しさん
2012/05/02(水) 09:14:02.34
>>587が一体何に対して戦っているのか見えない。
585仕様書無しさん
2012/05/02(水) 09:14:35.99
>>583の間違い。
586uy
2012/05/02(水) 13:49:59.01
ひとつ分かってるのは再帰で書くと
ループで書くよりも記述量が少なくなったり、
変数が消せるって事

それを常に書いていけない理由は、人がバカだからとしか言えない
いずれ遠い未来使いこなせる奴が出てくると思う
そのときにOOはプギャーwwwといわれる
587仕様書無しさん
2012/05/02(水) 14:03:27.06
ああ、糞コテ用隔離スレがなくなったのか。
588仕様書無しさん
2012/05/02(水) 14:53:49.91
糞スレを立てまくったアホがいたからな。
糞スレ消化要員としてせいぜい煽っておこう。
589仕様書無しさん
2012/05/02(水) 15:43:58.15
えー、再帰なんか普通に使うだろ。
どんだけスキルの低い職場なんだよ。
590仕様書無しさん
2012/05/02(水) 15:48:29.88
鉄器時代のFortranで育ったジジイが幅を利かせてた時代には結構あったのよ。
(マネージャーが理解できないから)再帰禁止とかそういうルールが。
591uy
2012/05/02(水) 19:53:07.81
>>589
じゃ、今日からOO捨てて再帰で書いてみっつって出来るんですか?

お前の考えてる部分の再帰の話じゃないよ
592仕様書無しさん
2012/05/02(水) 22:17:17.91
おまいらにはスタックオーバーフローがお似合い
593仕様書無しさん
2012/05/02(水) 22:19:35.91
なんで例外のスレでOO談義なんだ
Cに置ける構造化例外機構、C++の何でも投げられる例外機構、
Scheamの継続による例外機構、AdaなどPascal系の整数を投げる例外機構。
大半の例外機構じゃOOなんて関係ないだろ。
594仕様書無しさん
2012/05/02(水) 22:24:17.53
uyはゲームが、ゲームがとやたら拘ってたが
そろそろまともに遊べるゲームの1つでもできたのか?
まさか、未だオセロとかそんなレベルじゃあるまいな。
595仕様書無しさん
2012/05/02(水) 23:12:16.74
>>593
このアホコテは昔から
「例外≒OO=悪」
という超シンプルな間違った知識しか持ち合わせていない
そこから全く成長していないから相手するだけ無駄
596仕様書無しさん
2012/05/02(水) 23:32:28.94
その阿呆に釣られてOOの話を続けてる莫迦も
さっさと首括ってくればいいのに。
597仕様書無しさん
2012/05/02(水) 23:42:14.09
マ板にはアホだろうがなんだろうが全力で相手する暇人が多いからな
他では速攻切り捨てられるから結局相手してくれるヤツが居るマ板に戻ってくるんよな
んで自爆するまで糞みたいな自説披露してしばらく沈黙
しばらくしたらヒキニートゆえに人恋しくなって(笑)またご来訪

この繰り返し


某スレに居着いてる別のレス乞食な屑コテも同様に
相手する馬鹿が居るからこの板に依存(笑)
攻撃されたらキレるが相手にされないと拗ねるのはこの子と同じ
まあそれなりに需要と供給が成立しているということなのだろう
598uy
2012/05/02(水) 23:49:09.04
>>595
例外が悪とかいってないよ
オブジェクト指向(笑)やっていく上では例外に頼るしかないよね
それはどういうことかというと、

そもそもオブジェクト指向が斜めに立てられた建物であって
オブジェクト指向で大きなもの作っていくとどうしても
それを支える添え木として例外が必要になってる事に気づこうか

そもそもw newで例外が発生するからプログラマがそこにコードかくとかwwwwwww
・・・OSか言語設計見直せよって話じゃん

OSや言語が斜めに立てられてるから、プログラマは例外で添え木をするしかなくなっているんだよね可愛そうにね


俺もRubyで例外は使うよ
でも静的言語で使うような例外ではなくもっとシンプルな使い方
method_missingも例外みたいなもんだしね
599仕様書無しさん
2012/05/03(木) 00:22:52.06
trycatchのどこにOOの入る余地があるのかわからん。
600仕様書無しさん
2012/05/03(木) 02:19:29.65
Google Goや、純粋OOP型であるVisual Works、
Pharoに例外機構が無いのに何言ってんだ?

例外処理自体はするけど、Cの例外処理と
似たようなもんだし
601仕様書無しさん
2012/05/03(木) 02:20:31.10
>>598
それより、ここ一年で何作ったんだよお前は
602uy
2012/05/03(木) 03:29:55.46
プログラム関連でいえば
3つくらいは作ったかもしれん
いずれも1日で作ったものだよ
公表は出来ない類のもの

つーかプログラミングやってない
忙しい氏ね
603仕様書無しさん
2012/05/03(木) 05:53:09.38
例外なくてもOOは成立するだろ
何言ってんだこの馬鹿
604仕様書無しさん
2012/05/03(木) 07:38:50.06
visual worksにもpharoにも例外機構はあるが…
605仕様書無しさん
2012/05/03(木) 08:10:31.97
別軸のパラダイムを混同するなよ
606仕様書無しさん
2012/05/03(木) 08:29:13.01
シェルスクリプトにも
例外相当のものがあるというのに。
607仕様書無しさん
2012/05/03(木) 08:32:55.72
例外の考え方としては、

エラーが発生したらデフォルトで本来の流れと違うコードに飛ぶというもの

これの利点は、想定外の事例が発生した時に
(エラーってのは大抵想定外)、そのまま処理が進むないということ。

何も書かない状態で安全な動きをするというのがメリット。
608仕様書無しさん
2012/05/03(木) 08:55:28.23
例外は第3の選択肢であって、想定していない事象を握りつぶすことじゃないよ。
609仕様書無しさん
2012/05/03(木) 11:02:25.44
そりゃ想定してないのを握りつぶしたらダメだろw
なんでわざわざ握りつぶすんだ?
610仕様書無しさん
2012/05/03(木) 13:46:55.60
>>604
参考にその例外機構を使ったコード書いてみて
611仕様書無しさん
2012/05/03(木) 13:59:24.43
ぐぐれかす
612仕様書無しさん
2012/05/03(木) 14:05:24.66
>>604
汎用的なシグナル・ブロック・通常のメッセージ式の組み合わせで
ライブラリとして例外処理出きるようになってるだけで、
専用の例外機構なんてなくね?
613仕様書無しさん
2012/05/03(木) 14:15:20.86
なぜそんなものを作ったのか、
便利だからさ。
614uy
2012/05/03(木) 14:29:41.16
>>609
Rubyで俺は、例外使うときにそういう使い方をしてるよ
利点としては、いちいちエラーの原因探るのがめんどくさいんだけど、なんか稀にエラーが出ちゃう場合に、
とりあえず例外で飛ばして次の処理にいく
そんなかなりアバウトなプログラミングが出来る
俺はこれを最近とあるマルチスレッドプログラミングで行った

500の何かがあった場合に、その中からエラーを出さずに使えるものだけ使い
ある処理をする場合にエラーの原因を探らずにプログラミングを続行するために例外を使った
615仕様書無しさん
2012/05/03(木) 14:43:29.96
> 利点としては、いちいちエラーの原因探るのがめんどくさいんだけど

あぁ、俺も面倒くさい時は
信号無視とかやるよ。

でも今は、間違ったことをやるって話じゃないんだ。
616仕様書無しさん
2012/05/03(木) 16:20:11.60
>>612
MethodContextのソース読んでみるヨロシ
617仕様書無しさん
2012/05/03(木) 19:47:05.47
復旧できない例外を復旧できるところまでラップして投げたりするのは普通に当たり前のことだが、
理解できないから全部スルーすんのは間違いだろ。
バグの原因をもみ消し追跡を更に困難にする糞コードの典型じゃん。

結構長い間マ板に執着割りには、相変わらずuyは成長がないな。
昔から常に自分が優位だと思い続けるためだけに、主張コロコロ変えながら無駄レス量産続けてるだけで
プログラミングのスキルは全然身に付いてないじゃん。向いてないんじゃね。

それともチンコで釣りするのが趣味なのか?
618仕様書無しさん
2012/05/03(木) 21:41:03.73
つか、必要だからそのルート通るんでしょ?何から問題があったとして
そこをぶっ飛ばすなんて、その先まともに動くのかね?よしんば動いたと
しても、それって自分で作ったもんをコントロールできてねーんじゃ?
619仕様書無しさん
2012/05/03(木) 22:38:17.30
まだ例外使えない奴がいるのか。
620uy
2012/05/03(木) 23:51:11.10
理解してる>>615と理解してない617,618の違いはなんだ

赤信号でもプログラムを完遂させるようなソースコードなんて
普通書く奴いないから無視していいよ
イメージとして捉えられない奴にまで説明する気もない
別にそれを例外の正しい使い方だとか言ってないしw
621仕様書無しさん
2012/05/04(金) 00:04:46.89
> 理解してる>>615と理解してない617,618の違いはなんだ

俺がお前に教えてやるレベルだからじゃね?
622uy
2012/05/04(金) 00:05:42.53
へー

ただ単純に結果だけがほしい時であれば
再現性が少ないエラーやバグを、いちいち調べないってのが本当の所

rubyだとgemで落としたらライブラリにバグもあったりするし、文字コード関連や型エラーなど
そういうものを、よく考えずにすっ飛ばしてどうにか動くようにする為に例外使うこともある
この使い方は、元々の例外の使い方じゃなくて副産物なんだろうね
けど便利に使わせてもらってるよ
623uy
2012/05/04(金) 00:07:12.08
どうせ社畜プログラミングしかやってない子にはわからないんだから、
わからないものはスルーすればいいのに

2chの全部のレスから疑問をなくさなくちゃ気がすまないのか?
uyは何を言っているんだろう、よくわからないや で終わらせればいいのに
邪魔だと思うぞ、そういうのは
624仕様書無しさん
2012/05/04(金) 00:11:36.10
で、お前なんのために生きてるの?
625uy
2012/05/04(金) 00:12:42.44
約束したんだ

あの日
626仕様書無しさん
2012/05/04(金) 01:20:43.63
0点
627仕様書無しさん
2012/05/04(金) 02:02:42.32
uyはコテンパンにされたコテハン
628uy
2012/05/04(金) 02:07:12.34
例外を正しく使えないプログラマ多いね。 その7->画像>5枚
629仕様書無しさん
2012/05/04(金) 02:11:40.81
>>628
お前は毎日日曜日だろ?w
630仕様書無しさん
2012/05/04(金) 02:19:48.47
>>620
やっぱりuyは馬鹿だな。全然理解できないじゃん
>>615,617,618は結局全部間違いの指摘だろ
あの>>614の内容じゃ、俺馬鹿ですよ叩いてくれって言ってるようようなもんじゃないか
それとも、今度もまた以前の発言捻じ曲げて、都合よく解釈して自己弁護するの?

> それともチンコで釣りするのが趣味なのか?
631仕様書無しさん
2012/05/04(金) 02:24:37.15
今度はここでコテンパンにすればいいのか?
632仕様書無しさん
2012/05/04(金) 02:25:22.94
糞コテは相手するだけ無駄だからスルーしとけ。
何言っても最後にレスした方が勝ちだと思ってるから、何かしら反応してくるし邪魔。無視が一番。
633仕様書無しさん
2012/05/04(金) 02:26:16.11
存在自体が例外みたいな屑ニートが例外扱いはダメって
自分をドロップアウト扱いするなって言ってるみたいで笑えるよね
634仕様書無しさん
2012/05/04(金) 02:28:47.41
throwしろって話かw
635仕様書無しさん
2012/05/04(金) 02:32:41.64
>>623
>わからないものはスルーすればいいのに
そうやってわからない(理解できない)例外を全部スルーしてるってわけか

うちの数ヶ月で切られたゴミ中途も同じようなことしてたなw
636仕様書無しさん
2012/05/04(金) 02:50:35.46
スルーワラタ
そっちの意味だったのか…。
637仕様書無しさん
2012/05/04(金) 02:53:28.45
また暴れるようなら再度過去のイタい発言集をテンプレにした隔離スレをたてるだけだな
638仕様書無しさん
2012/05/04(金) 02:56:14.38
例外が発生した時にその後の処理をすっ飛ばしたら問題だろ、
と言って例外を批判するやつは、例外を使わなくてもエラーコードをチェックして
その後の処理をキャンセルするコードをせっせと量産しているという事実を
見逃しているからフェアな比較ができてないだけ。
そしてエラー処理を入れ忘れてバグると。例外をつかったほうが逆に安全、というのは直感に反するところもあるが事実だ。
639仕様書無しさん
2012/05/04(金) 03:02:54.64
うゆは基礎学力をつけることをスルーしてきたからなぁ。
640仕様書無しさん
2012/05/04(金) 03:13:53.15
例外スレらしいオチも付いたところで、糞コテを補足して処理するのもこれくらいにしておこうか。
ここでは復旧できる見込みのない例外だし、ロギングもしたから再スローするのが正しい。
641仕様書無しさん
2012/05/04(金) 08:26:06.88
>>614をしたり顔で書いてるの想像すると笑ってしまう
642仕様書無しさん
2012/05/04(金) 14:57:27.24
周回遅れに気づけない
643仕様書無しさん
2012/05/05(土) 22:54:07.49
他人にソフト公開してる訳でもないクソコテにつきあうお前らってやさしいな
そのままちゃんと隔離しといてくれよ
644uy
2012/05/06(日) 01:17:42.20
思うんだけど、俺がレスをしないとスレ停止してんだけど

たのしいかこれ
645仕様書無しさん
2012/05/06(日) 01:18:54.98
え?お前をからかうスレだろう?w
646仕様書無しさん
2012/05/06(日) 03:17:49.44
なぁに、スクリプトが止まっただけだ。
647仕様書無しさん
2012/05/06(日) 03:48:24.15
元々過疎スレでたかが1日レスが無かったぐらいで何の問題が?
648仕様書無しさん
2012/05/06(日) 03:56:58.84
診断基準(アメリカ精神医学会 DSM-IV)

『自己愛性人格障害』Narcissistic Personality Disorder
誇大性(空想または行動における)、称賛されたいという欲求、共感の 欠如の広範な様式で、
成人期早期までに始まり、種々の状況で明らかになる。以下の5つ(またはそれ以上)によって示される。

 (1) 自己の重要性に関する誇大な感覚(例:業績やオ能を誇張する、
     十分な業績がないにもかかわらず優れていると認められることを期待する)。

 (2) 限りない成功、権力、才気、美しき、あるいは理想的な愛の空想にとらわれている。

 (3) 自分が特別であり、独特であり、他の特別なまたは地位の高い人達に
     (または施設で)しか理解されない、または関係があるべきだ、と信じている。

 (4) 過剰な賞賛を求める。

 (5) 特権意識つまり、特別有利な取り計らい、または自分の期待に自動的に従うことを理由なく期待する。

 (6) 対人関係で相手を不当に利用する、つまり、自分自身の目的を達成するために他人を利用する。

 (7) 共感の欠如:他人の気持ちおよび欲求を認識しようとしない、またはそれに気づこうとしない。

 (8) しばしば他人に嫉妬する、または他人が自分に嫉妬していると思い込む。
649仕様書無しさん
2012/05/06(日) 10:19:33.46
>>638
>見逃しているからフェアな比較ができてないだけ。
>そしてエラー処理を入れ忘れてバグると。

処理書いてるからフェアかどうかって話ではないでしょ。
でもって例外だって例えばキャッチし切らずに抜けること
あるじゃん?でより上位の例外処理でつかんじゃって解析に
手間取ったり。

間抜けな話だがまぁそこまでいくと、どこ
までを処理の中
で想定できてるか、どこまで問題をとりのぞけるかっちゅー
話になってくるけどね。

一緒だよ。
650仕様書無しさん
2012/05/06(日) 12:09:05.68
>>649
デフォルトで処理が止まるのと進むのと、どっちが問題を起こしやすいか、
問題が潜在化・深刻化しやすいか、考えてみたら違いがわかるでしょ。
651uy
2012/05/07(月) 20:14:21.30
今ちょっと、
これから有名になって使われるであろうプログラミング言語のGoを見てるんだけど

http://ja.wikipedia.org/wiki/Go_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%29
>例外処理やクラスの継承、ジェネリックプログラミング、アサーション、オーバーロードといった機能が存在しない

らしいですよwwwwwwwwwwwwwwww
例外厨涙目wwwwwww

Googleのwwwwww博士級の人達がwwwwwwww例外はいらないと言ったんですねwwwwwwっうぇwwwwww
652uy
2012/05/07(月) 20:21:22.28
そりゃそうだよねーーー
いらないよねーー
このあたりはJava(笑)と違って流石Googleかなって思う

>クラスの継承
これもいらない、同意

>ジェネリックプログラミング
これもいらない、同意 メタとか動的言語でやれって話

>アサーション
は使ったこと無いな

>オーバーロード
これは静的言語ではあると便利だけど、Goの構文だとやりにくかったんだろうな
別の方法が用意されるなら良い
653仕様書無しさん
2012/05/07(月) 20:26:02.78
だから誰にも相手にされず消えていったわけさ
654仕様書無しさん
2012/05/07(月) 22:43:21.16
しかし、角がなくて味気ないuyだな
655仕様書無しさん
2012/05/07(月) 22:57:55.44
>>651
悪い悪い。訂正しておいたよ。

> クラスの継承、ジェネリックプログラミング、アサーション、オーバーロードといった機能が存在しないことも特徴として挙げられる。
> try-catchはないがそれに代わる機能としてpanicとrecoverを用いた例外処理をサポートしている。[2]
> FAQにおいて、ジェネリックプログラミングは一部導入が表明されているが、オーバーロードは効率的見地から排除されたことが述べられている。
> 関数は多値を返すことができるので、それによりエラーの報告は容易である、としている。
656仕様書無しさん
2012/05/07(月) 23:08:34.08
英語版を参考に、もうちょっと追加したよ。

> クラスの継承、ジェネリックプログラミング、アサーション、オーバーロードといった機能が存在しないことも特徴として挙げられる。
> インターフェースを用いたポリモーフィズム(多態性)が実現されている。
> try-catchはないがそれに代わる機能としてpanicとrecoverを用いた例外処理をサポートしている。[2]
> FAQにおいて、ジェネリックプログラミングは一部導入が表明されているが、オーバーロードは効率的見地から排除されたことが述べられている。
> 関数は多値を返すことができるので、それによりエラーの報告は容易である、としている。
657仕様書無しさん
2012/05/07(月) 23:29:41.57
Googleの中の人のプログラミングがダメダメなのは
Android携帯のできの悪さを見ればわかる。

例外だけでなくアサーションもないということは
それだけエラー処理を軽視している証拠。
658仕様書無しさん
2012/05/07(月) 23:46:33.75
なんだ。Goにも例外あるんですね。
659仕様書無しさん
2012/05/07(月) 23:51:33.18
インターフェースがあってクラスの継承がないというのを見ると
VB6を思い出すね。

VB6もシェネリックもオーバーロードもないし、
あ、でもアサーションはあったな。
660仕様書無しさん
2012/05/08(火) 07:15:02.18
マ板でtypoする奴がいるってのが信じられない
マ止めた方がいいね
661仕様書無しさん
2012/05/08(火) 07:26:57.24
Cの代替言語で何かする気にはなれない
そういうのは組込み屋がやってろ
ScalaやれScala
662仕様書無しさん
2012/05/08(火) 09:31:52.09
COM
663仕様書無しさん
2012/05/08(火) 11:16:10.06
Goのdefer文とpanic-recoverの仕掛けは実際良くできてるよ。
try-catchなんか実はfinally節が必要なだけな場合も多かったりするし。
とりあえずtry-catchで囲んどけ、みたいなことがないだけマシ。
664uy
2012/05/08(火) 17:33:37.64
一番マシなのは「;」 末尾のこれがない事だろ
; これ消すのに半世紀かかってんじゃねーよks
665仕様書無しさん
2012/05/08(火) 17:54:17.76
貴様 awk を知らずに偉そうなこと言うな
666仕様書無しさん
2012/05/08(火) 19:38:41.14
uyしっとるか
BASICは「:」打つと同じ行に次のステートメントを書ける
667仕様書無しさん
2012/05/08(火) 20:56:14.79
てかfortranにんなもんねーよ
668仕様書無しさん
2012/05/08(火) 21:24:05.48
>>655 どうでもいいがtry-catchだろうが、recoverだろうが例外処理って書いてるのおかしくないか?
こういうのは、あくまで例外機構であって、例外処理は人間が書くものじゃね。
669仕様書無しさん
2012/05/08(火) 21:26:24.73
>>664
枝葉末節はいいから、他人に見せられるソフト作って公開しろよ
ソフト一つ作れん言語オタクの戯言なんざどうでもいい
670仕様書無しさん
2012/05/09(水) 05:48:48.74
コードはよく出してるよなuyは。他人に見せられるかどうかは…
671仕様書無しさん
2012/05/10(木) 10:12:16.63
すぐ例外と関係ないことに流れて自分の主張すら忘れる程度の知能しか持ち合わせてない
レスするほど価値があるか考えてから相手しろよ
672仕様書無しさん
2012/05/10(木) 11:39:52.99
知能程度が近いんだろ。
673仕様書無しさん
2012/05/10(木) 13:27:28.50
uyだしな
触る奴もアレ
674仕様書無しさん
2012/05/11(金) 11:01:27.49
この会話の流れの脱線具合がいかにも例外っぽい。
675仕様書無しさん
2012/05/12(土) 02:09:43.52
こんどはここでボコボコにされてたのかw
676仕様書無しさん
2012/05/12(土) 13:04:27.70
C++だと、例外はファクトリメソッド内以外ではcatchしない
オブジェクト生成時に発生した例外だけはエラー戻り値に置き換える
それ以外の場所で発生した例外はアプリ殺した方がマシ
無意味なcatchをあちこちに配置する必要なし
677仕様書無しさん
2012/05/12(土) 13:15:28.79
> オブジェクト生成時に発生した例外だけはエラー戻り値に置き換える

え? newの戻り値が、エラーになるの?
ありえんわぁw
678仕様書無しさん
2012/05/12(土) 14:32:22.59
つか、C++の例外は途中でCがはさまったりすっとややこしいからなぁ。
679仕様書無しさん
2012/05/12(土) 15:49:42.59
>>676
えとね、コンストラクタで例外だしていいんですよ。

どっかの馬鹿本がだめとか間違ったこと
書いているのがいけないんだが。
680仕様書無しさん
2012/05/12(土) 16:31:29.64
というかRAIIというベストプラクティスが一般的になる前に、「C言語禁じ手」っていう
べからず集の人気が出た勢いで書いちゃった、ろくにこなれてないC++べからず集に
書いてあったのが、その都市伝説化の発端なんだよな。
681仕様書無しさん
2012/05/13(日) 15:05:50.71
あと、どこでcatchするかは処理次第だから、
catchするだけでNGというようなミスリードを招きそうな書き方はちょっと違う気がするな
アプリケーションとして続行可能だが、メソッドとしては例外、なんてのはいっぱいあるし
その処理で復旧可能であればその場でcatchすべきだし、
常に復旧できる処理であれば、例外復旧までを含めた処理作ってラップしてあげればいい

たまに湧く、例外に文句言ってる人は、こういったラップした処理しか作った/使ったことないから、
例外を吐く必要はないって思いこんでるんだと思うわ
682仕様書無しさん
2012/05/13(日) 15:17:35.55
ラップされてるんならいいんだけど、ラップもせずに例外上げてくるのがむかつく。
683仕様書無しさん
2012/05/13(日) 15:25:54.79
>>682 エラー処理めんどいってことだろ。わかるわかる。
684仕様書無しさん
2012/05/13(日) 15:46:02.37
異常系考慮しないマほど例外を嫌うイメージ
なんか例外出たってことには気づくけど、その内容が理解できない奴も多い
685仕様書無しさん
2012/05/13(日) 16:05:00.27
そもそも、知る必要ないものばかり投げてくるじゃん。
そういうダサすぎなプロジェクトばかりで嫌になる。
686仕様書無しさん
2012/05/13(日) 16:09:36.02
確かに知識がないことを棚に上げて文句言ったりする奴が多いな
687仕様書無しさん
2012/05/13(日) 18:33:13.18
>>685
たとえばどんな例外のこと言ってるの?
プロジェクト内の話ならお前がダサくないように修正を提案すればいいんじゃないの?
688仕様書無しさん
2012/05/13(日) 21:14:17.65
例外クラス(値?)をどうデザインするか迷う。
構造がまったく同じで型情報のためだけに
クラスボコボコ作るのも面倒くさいしなぁ。

throw LexError<class Lexer::InvalidSymbol>( 色々 );

とりあえず、識別用の型をテンプレート引数に渡して
それで区別するってのが楽では有るけど、結局同じ型が
生成されてるのがなんかねぇ。
689仕様書無しさん
2012/05/13(日) 22:00:21.37
JavaでWeb系なら、基本的にはRuntimeException継承した業務レベルのエラー1つだけにしておくかなぁ
システムエラー的なので、RuntimeExceptionじゃない奴は
共通処理で行うように設計して、理解してる奴に担当してもらい、RuntimeExceptionでラップして投げるようにする
とにかく馬鹿にはなるべく意識させないようにしておくのが理想
690仕様書無しさん
2012/05/13(日) 22:11:18.47
>>688
同じ意味合いのある例外ならそういう集約の仕方はありだと思う
型が同じだと違和感があるような例外であるなら、元になる例外を継承して複数のクラスにする、とかでもいいと思う

普通にクラスを作るときと同じ感じで設計するのがいいんじゃね
同じオブジェクトとして扱うべきものかどうか、が判断条件
個人的には、クラスファイルが増えること自体は、全然面倒だとは思わない
691仕様書無しさん
2012/05/13(日) 23:13:24.09
中身に文字列しか持って無いようなのが困るんだよね。
いっそハードtypedefがありゃいいのにと思うぐらい煩わしい

class CantOpenFileError:
  public std::runtime_error
{
   CantOpenFileError( const char message[]):
      std::runtime_error( message ){}
};
class NotExistFileError:
  public std::runtime_error
{
   NotExistFileError( const char message[]):
      std::runtime_error( message ){}
};
692仕様書無しさん
2012/05/14(月) 09:40:21.01
try{}
catch(...){}

何でもかんでも全てこれ。
再研修受けるか、現場から去ってくれ。
693仕様書無しさん
2012/05/14(月) 12:36:35.32
まず、お前がそういう研修を
されたかどうか考えてみ?
694仕様書無しさん
2012/05/15(火) 12:33:26.44
転職して来た奴なんだが…。
695仕様書無しさん
2012/05/15(火) 22:02:56.72
Cにおいて例外ってどうやって捕まえるんですか?
696仕様書無しさん
2012/05/15(火) 22:04:43.51
signal
697仕様書無しさん
2012/05/16(水) 20:32:50.63
戻り値 + errno
698uy
2012/05/28(月) 01:16:16.47
え、
そういえばC++からCのライブラリ使うときに例外ってどうすんですか
書き直しですか
699仕様書無しさん
2012/05/28(月) 03:22:25.64
はぁ?
700仕様書無しさん
2012/05/29(火) 01:41:01.08
え、
そういえばRubyからCのライブラリ使うときどうすんですか
書き直しですか
701仕様書無しさん
2012/05/29(火) 14:46:23.29
え、
そういえばCからアセンブラのライブラリ使うときにスタックってどうすんですか
書き直しですか
702仕様書無しさん
2012/05/29(火) 22:41:03.64
アセンブラーのライブラリは、アセンブラーのライブラリだから多少面倒だろうな。
アセンブリで書いたライブラリならオブジェクトコードにしてリンクすりゃ済むが。
703仕様書無しさん
2012/05/29(火) 22:45:33.43
DLLを使用してるアセンブラーなんて多く無いだろうから
大概スタティックリンクでアセンブラーの実行ファイルに
組み込まれてるだろうな
アセンブラーの実行ファイル内に入ってるライブラリを
取り出すのは骨が折れるぞ
704仕様書無しさん
2012/07/21(土) 11:07:03.83
先日またやられたわ…

public String getHoge() throws Exception {
 try {

  :(全処理が一メソッド内にかかれてるせいでとてもスパゲッティ)

 } catch (Exception e) {
  e.printStackTrace();
  return null
 }
}

こういうコード書きまくってる馬鹿がわいてひどい目にあった
底辺なおかげでソースレビューの習慣がないせいで、馬鹿が紛れ込んでしまうとマジ悲惨
そういう馬鹿に限って、コミット殆どしないようにために溜めたゴミクラスを
数十個一括でコミットして、実装の不都合を隠しやがるし、その実装でも例外もみ消して隠しやてやがる
だいたいこれじゃ絶対例外飛ばないし、throws節の意味もわかってねーだろ!
705仕様書無しさん
2012/07/21(土) 12:29:51.63
>>704
例外書いてるのにスルーしろwww
706仕様書無しさん
2012/07/21(土) 16:11:09.19
底辺会社には底辺社員が揃うってことか
707仕様書無しさん
2012/08/19(日) 15:51:13.90
>>704
その馬鹿も、昨日今日沸いたわけじゃあるまいに。
誰が見ても駄目なコードを放置しておいたお前も悪い。
見れば一発で駄目だってわかるじゃないか
708仕様書無しさん
2012/08/19(日) 20:42:18.21
日本語読めない方は書き込まないで欲しいもんだね
709仕様書無しさん
2012/09/29(土) 02:14:43.71
>だいたいこれじゃ絶対例外飛ばないし
ワロアww
throws new Spoon();
710仕様書無しさん
2012/09/30(日) 17:16:48.78
関係ないがthrowsにException書くのは、俺はありだな。
throws
   Exception,
   SAXException

みたいな感じで、例外を投げる箇所には具体的な例外クラス名と一緒に
Exceptionも書いておく。新しい例外を追加する際に非常に楽だ。
711仕様書無しさん
2012/09/30(日) 18:51:20.41
やめろ馬鹿www
712仕様書無しさん
2012/09/30(日) 22:24:31.22
なぜ?
713仕様書無しさん
2012/10/01(月) 13:27:09.67
検査例外である必要が全くない
714仕様書無しさん
2012/10/01(月) 23:19:52.25
例外検査に必要なのは投げる可能性が有るか無いかだけ。
個別の型検査は、オーバーライドが有る以上邪魔なだけだ。
http://www.ibm.com/developerworks/jp/java/library/j-jtp05254/

C++でも例外に対し警告を出せるthrowの元になった仕組みがあったが結局使われず
投げない事をしらせる意味しか無くなった。挙句は、それせんようの構文までできた。
挙句.net環境においては採用されず、後続の言語にも採用するものは居ない。
715仕様書無しさん
2012/10/02(火) 00:41:12.88
そういうのは実行時例外で事足りるだろう
意識させるための検査例外なんだから全部にExceptionとかアホの極み
ないわ

まあこの意識させる例外ってのは検査例外のダメな部分でもあるけれど
きちんと最初から例外も設計されてる環境なら、それが問題になることはそうない
716仕様書無しさん
2012/10/02(火) 01:12:57.02
もうみんな匙を投げちまってるんだから今更言っても遅い。
Exceptionとまでは行かないまでも、SAXException、SQLExceptionと
ライブラリーベンダーは単一型でthrows定義して、必要に応じてcatch
細かい例外に別けろなスタイルを取ってる。まぁ、アレは失敗だよ。
throwsに細々派生型書くなんてスパープログラマーさんだけがやってりゃいい。
717仕様書無しさん
2012/10/02(火) 02:10:18.58
検査例外自体、上まで投げ返すような使い方するもんじゃないしな。
なるだけ発生した直近で処理するのがベストでしょ。

んで、多発するようなのを個別に処理するのは面倒だし、
そもそも、知識ない人に例外意識させてもろくなことにならないから、
検査例外に対しては、共通の処理作ってはRuntimeExceptionの派生でラップするようにするしかないと思う。
そう考えると、無駄だなって気がするのもなんかわかるかな。
まぁ、ライブラリ導入して、ドキュメントとか見なくても、ラップしとかないといけない例外とかがコードだけですぐわかるのは利点でもあるけどね。


ともあれ、とにかくアホにはなるだけ例外を見せちゃいけない。
あいつら検査例外でビルドこけると、おまじないのようにthrowsExceptionとかcatch(Exception)とか書くし。
アホを除外できれば一番なんだろうけど、なかなかそうも行かないしな。
718仕様書無しさん
2012/10/02(火) 06:24:53.29
ないわー、まじないわー。
catchないしthrowsを強制させるExceptionで通常のthrowsをまとめるならまだしも、
実行時の整合性エラー(RuntimeException)で代用するとかまじないわー。
ExceptionならIOExceptionとかなげる事もできるしcatchのチェックも維持できるけど、
RuntimeExceptionならチェックなくなって元も子もねぇじゃん。
719仕様書無しさん
2012/10/02(火) 06:33:10.74
>>715
理想論はいいとして、throwsへの派生型記述にこだわると何が嬉しいの?
開発経験ながけりゃ派生型の固有の情報が欲しい時なんて必要に応じてぐらいで
毎回必要とされる機会なんて殆ど無いはずだが。
720仕様書無しさん
2012/10/02(火) 06:43:27.14
開発経験の長い人で派生クラスだけをthrowsに書けって人は、
オーバーライド先で系統の違う例外が発生したらどうしてるの?
IOExceptionしかthrowsに書いてない場所でSQLExceptionが発生したら?
721仕様書無しさん
2012/10/02(火) 21:22:26.87
全部のメソッドにthrows Exception書いてるプロジェクトは色々死んでた記憶しかないな
722仕様書無しさん
2012/10/02(火) 21:29:31.62
珍しくスレ伸びてるね。

throwsにExceptionって書くのはチェック例外自体無駄な記述としてしか利用してないってことだから、
そもそもチェック例外のある言語を使ってる意味はないかな。
安いゴミグラマ簡単にかき集めれるって意味でJavaを使うメリットは十分あるけどね。
723仕様書無しさん
2012/10/03(水) 00:19:37.40
>>721
どんな様子だった?
例外握りつぶす馬鹿が参加してたとかそんなオチはやめてね。
そういう馬鹿が居るのはは、チェック例外に限らず全般に言える問題だし。
724仕様書無しさん
2012/10/03(水) 00:21:18.75
>>722
あるさ。例外を投げる。投げないって事は解る。
C++11にもそういう機能が登場したしね。
725仕様書無しさん
2012/10/03(水) 00:48:12.99
無効な値を返す、または、オブジェクトが無効になる可能性がある→例外処理必須
値を返す場合は必ず有効な値を返し、必ずオブジェクトは無効にならない→例外処理不要
例外の委細は解らずとも、throwの有無が解ることには価値があるわな。
726仕様書無しさん
2012/10/03(水) 04:31:03.76
RuntimeExceptionを祖先にもつ例外だってthrowsに書けるし、javadocにも書けるから、意識できないわけじゃないよ。
実行時例外と検査例外の差は補足の有無をコンパイラがチェックするかの違いだけ。
処理済みでかつ一部の共通処理以外では補足の必要がない状態になった例外までコンパイラーに検出させる必要ない。
なので実行時例外へ纏めてしまう、って手法は、汎用的なフレームワークとかでも使われてるよ。

むしろ後から例外が増えた場合に影響ないように、なんて理由で、親のタイプでthrows節に書くのは、
Exception型でcatchしたりすることが増える要因を作ったり、多数のメソッドに検査例外のthrows節が必須になったりして、
無用な補足を多数繰り返すようになったりしてNG。間違いを招きやすいので、これはやっちゃいけない。
そんなことをやってしまうと、とたんに検査例外の意味がなくなってしまう。

プライベートメソッドでthrowsで例外を伝播させていくとかであれば、一クラス内で収まるし大きな問題にはならないけど、
protected や public メソッドでそれをやるのは、やっぱよくない例外設計だよ。
そういうのが蔓延してしまうと、不必要な補足をされてしまった場合に、機械的に検出するのが難しくなる。
チェック例外のビルドエラーを発生させないように記述する方法はいくらでもあるからね。
一部の共通の例外処理を除いて、catch(Exception e) のようなコードに記述させないルールのほうが、
徹底しやすく機械的な発見もしやすいから、意図しない例外処理が発生する要因を減らせる。

このあたりの使い分けに方ついては、別に最近出た話題でもないので、情報は結構あるよ。
http://www.google.co.jp/search?q=%E5%AE%9F%E8%A1%8C%E6%99%82%E4%BE%8B%E5%A4%96
727仕様書無しさん
2012/10/03(水) 05:08:08.14
>>721
それは、実装ではなく設計の問題じゃないかな?
継承をすることでメソッドの役割や機能が変わってしまってるので、祖先のメソッドが限定的過ぎたか、
子孫のメソッドが異なる役割を持ったメソッドになってる、ってことが本当の問題だと思う。
事前に集約されたタイプでの throws に"しておく"のは、
そういう問題が起きたとき、場当たり対応しやすいようにするためのアンチパターンでしかないよ。
もちろん、集約したタイプでの throws 節を書くな、という意味ではないよ。

>>724
検査例外は、例外が発生するしないを伝えるためのものではなくて、
その例外の補足の必要があるかどうかを、必ずコーダーに判断させることを強いるためにだけ、使うべきだと思うよ。

なので、アプリケーション全体で、処理済みであったり補足の必要がないのがわかりきっている例外まで、
検査例外でビルドが通らないようにしてしまうのは、検査例外である意味をなくしてしまってる。
そして「ビルドを通すようにする」という本来の目的ではない理由で、
例外の補足か伝播をハードコーディングする必要が出てきてしまう。

例えば、ぬるぽやIlligalArgument、UnsupportedOperationなんかが実行時例外になってるのも、同じような理由。
これらが発生するのは、基本的にコーディングのミスによるものなので、普通は補足しちゃいけない。
補足してガッするのではなく、発生しないようにコーディングで回避すべきことだしね。

同様に、処理すべき場所が明確に定まっているような例外であれば、関係のない場所で勝手に処理されてしまうのはバグ。
しかし、関係のない例外処理が随所に入るような例外設計になっていると、それを機械的に見つけるのが難しいくなってしまう。
検査例外がない言語であれば、例外処理をしている箇所を抽出すれば勝手な処理を発見できるけど、
先に書いたような、ビルドを通すためだけの例外処理が随所に出てきてしまうようになっていると、抽出が難しくなっちゃう。
だから検査例外が無駄になってるって話だと思う。
728仕様書無しさん
2012/10/03(水) 05:20:42.20
あ、呼びもとの例外処理を意識した例外のスローが云々は勿論理解しているよ。
ライブラリのような再利用が前提のモノに関して、実行時例外で纏めるのはどうか、
みたいな話、一々言わなくてもわかるよう事なので端折ってます。

実行時例外で集約云々のくだりは、
同一のアプリケーション内でお互いを全く意識しない前提な実装にするのは、
再利用性は高まるだろうし、こうあるべきって姿なのかもしれないけど、
そのアプリケーション以外でも活用するものでない限り、ただの無駄になる、という考えです。

それに、実行時例外でのラップを前提とした例外処理まで含めた
フレームワークとして再利用するのであれば、再利用も出来ないわけじゃないしね。
729仕様書無しさん
2012/10/03(水) 07:32:48.86
>>726
RuntimeExceptionを代わりにつかうのはアンチパターンだよ。
普通バグかランタイムシステムの異常だからね。

>なので実行時例外へ纏めてしまう、って手法は、汎用的なフレームワークとかでも使われてるよ
実際のクラスドキュメントへのリンクを貼ってくれるかい

>>727
理想論はいいんだけどさ、具体的にどいう風なコードでどういう問題が発生するか書いてよ。
Exceptionでthrows指定した時点で理想は捨てて実利をとりに言ってる訳だから。

>なので、アプリケーション全体で、処理済みであったり補足の必要がないのがわかりきっている例外まで、
>検査例外でビルドが通らないようにしてしまうのは、検査例外である意味をなくしてしまってる。
>そして「ビルドを通すようにする」という本来の目的ではない理由で、
>例外の補足か伝播をハードコーディングする必要が出てきてしまう。
例えば、実際にはこういう問題は起きないでしょ。
730仕様書無しさん
2012/10/03(水) 23:10:22.56
throwsにException型を書くのはその問題の典型じゃねw
めちゃくちゃ見かけるわ
あれ、このシステムではチェック例外を一切利用しないという宣言だろ
731仕様書無しさん
2012/10/04(木) 00:19:01.49
try{・・・・}
catch( RuntimeException exception ){ throw exception; }
catch( XxxxxxxException exception ){ /* Xxxxxxx固有例外処理 */ }
catch( Exception exception ){ /* 一般例外処理 */ }

これだけの事だろうに、なんで>>730みたいな話になるんだ?
単に教育が悪いだけじゃないか?
732仕様書無しさん
2012/10/04(木) 00:55:41.47
RTEキャッチして再スローとか随所に書く必要があるとかアホだなー
733仕様書無しさん
2012/10/04(木) 01:10:51.42
RuntimeExceptionにねじ込んでcatchできなるくなる事に比べたらその程度の手間は気にならないよ
734仕様書無しさん
2012/10/04(木) 01:16:23.73
斜めにしか読んでないけど、例外処理は絶対にこうしないといけないっていう厳密な縛りはないから、
用途やメンバーに合わせて、開発のチーム内で徹底できるルールを敷くことが大事であって
使い方は便利で問題が出なければ、ある程度柔軟に利用するのがいいと思う
道具は道具、アンチパターンにもメリットデメリットは存在するし、変に拘って視野を狭めないほうがいい

ただ、void hoge() throws Exception {} って書くと、それを呼び出す多くのメソッド全部が
throws Exception を書くハメになるから、普通は専用の例外を用意してそれでラップすると思う
Exception型を多用するのはデメリットのほうが多いし、Exception型使用禁止のプロジェクトとかもあるっちゃある
735仕様書無しさん
2012/10/04(木) 01:19:53.00
小さいプロジェクトなら追っかけりゃ大体わかるしあんまり気にならないけど
大きいプロジェクトで無駄な検査例外あちこちにあるとハゲるからやめろ!

javadocみればわかるかと思ったら、

* @throws Exception 例外

こんなんかかれてたりしてマジハゲる!髪返してほしいわ…
736仕様書無しさん
2012/10/04(木) 01:39:15.24
Exceptionをthrowsに入れるのはRuntimeExceptionで投げるのと変わらないって人は、
↓のような例外の要、不要なメソッドを分けられる事についてどう思ってるの?
RuntimeExceptionでも同じ事ができるの?

// finalで例外を出さない( コンストラクターでも同じ )
example.thomethingA();
--------------------------------------------------
try
{
// finalではなくオーバーライドされてる可能性がある
// また、throws Exception,・・・で宣言されいる
     example.thomethingB();
}
catch( RuntimeException exception ){ throw exception; }
catch( Exception exception ){ /* 一般例外処理 */ }

>>735
人間的な問題は現場の教育次第だし不毛だから置いとこうよ
737仕様書無しさん
2012/10/04(木) 01:40:58.56
ハゲに不毛とか酷いなお前w
738仕様書無しさん
2012/10/04(木) 01:55:37.97
やっちゃいけないといえば、メソッドの最初でtry書いて最後にcatch書く奴とかもあるなw
Exception型投げてくる奴多数あると面倒だからそう書いちゃうけどww

>>737
だれうまww
739仕様書無しさん
2012/10/04(木) 02:05:44.71
べ、べつに毛がないわけじゃないぞ…!

>>736
実行時例外ラップの話って、そもそもExcepton型でのキャッチや実行時例外のキャッチはさせない設計が前提の話じゃね
その場で捕まえないといけない例外はそもそも処理してまとめてから投げるか、
適切に復旧してもみ消して外に投げないから、派生クラスで限定的に書いても問題ないのでは?
色々ごっちゃになってね
740仕様書無しさん
2012/10/04(木) 02:08:05.27
>>735
細かく書けるなら書くに越したことはないけど、
オーバーライドで変わる場合はコメントに何を期待するの?

この辺は結局、インターフェースを実装する側に合わせるんじゃなくて、
使う側の都合でコメント書くしか無いんだろうな。
「この@throwsに書いてある例外がなげられる」じゃなく
「この@throwsに書いてある例外は呼び出し側の処理に使用される」ってな感じ?
741仕様書無しさん
2012/10/04(木) 02:10:34.33
つかなんかこう視点が違うな
全体の設計的な話してる奴と個々のクラスの実装担当者みたいな視点で話してる奴とじゃ噛み合うわけない罠

あとは想定してるアプリケーションも違いそう
Strutsとかつかってやるようなウェブアプリケーションと、その場で復旧して処理を続行するような落ちないシステム、みたいな

なんにせよ>>734、プロジェクト内でちゃんと統一が取れててハゲの原因を生まなきゃ何でもいいさ
742仕様書無しさん
2012/10/04(木) 02:21:24.45
>>740
javadoc勉強しなおしな
@throws には型とその例外がスローされる原因なり条件なりを書くもんだ
インターフェイス仕様のドキュメントなんだから、何をしたら発生するかっていう仕様を書くだけ
まぁjavadocちゃんと書けてる奴って、実際あんま居ないけどな…

あとオーバーライドしたらインターフェイス仕様変わるとか、そのクラス設計のほうに問題あんだろ
743仕様書無しさん
2012/10/04(木) 02:23:50.03
try {

  :

} catch (Exception e) {
  e.printStackTrace();
}
744仕様書無しさん
2012/10/04(木) 02:26:01.85
>>742
「」の中はコメントの内容言ってるんじゃないよ
throwsに列挙される例外の条件を言ってるんだよ
745仕様書無しさん
2012/10/04(木) 02:26:44.32
>>743
禿げる環境の話はもういいって
746仕様書無しさん
2012/10/04(木) 02:43:04.47
>>739 例えば、こういう処理にそのRuntimeExceptionの設計思想を入れるとどうなるの?

@Override
public final PaintContext getPaintContext()
{
  if( null != context ) return context;
  try
  {
    PaintContextPrototype prototype = environmentDependentContextFactory.createPaintContextPrototype();
    ・・・略・・・
    context = prototype.createPaintContext();
  }
  catch( RuntimeException exception ){ throw exception; }
  catch( XxxxxxxException exception ){ /* Xxxxxxx固有例外処理 */ }
  catch( Exception exception )
  {
    context = createSafeIndependentContext();
    ・・・略・・・
  }
  return context;
}
747仕様書無しさん
2012/10/04(木) 21:17:29.36
{}の位置とか()内のスペースとかなんか気持ち悪い
748仕様書無しさん
2012/10/04(木) 23:50:41.95
うむ、括弧のスタイルは統一してくれ
聞かれてないけど俺は括弧は括弧だけの行にする({}のこと)
749仕様書無しさん
2012/10/05(金) 00:26:47.90
こういうへんなコード書くおっさんがうちの職場にもいるけど例に漏れず例外も正しく使えてないな。
頭固いのか共通のフォーマッター使うように言われてるのに頑なに拒み続けてて最近空気が悪いw。
750仕様書無しさん
2012/10/05(金) 01:55:20.89
あと、人のソースに手を入れる時に、はじめに作った人とは明らかに異なるスタイルで追加する人いるよな
あれ、マジでみにくいからやめて欲しいとおもう
751仕様書無しさん
2012/10/05(金) 02:31:58.71
とはいえあまりにヘンな俺様ルールには従ってられないじゃん
たとえば746みたいな本人はこーゆーのが読みやすいと思って派手にオナニーしてるヤツね
おそらくはブロック内処理が2行以上なら改行して…みたいな一応決まったマイルールがあるんだろうけど
そのルールを推測する時間がもったいないじゃん?
触る前にフォーマッタかけちまうよ(ウチは使用を強制されてはいない)
752仕様書無しさん
2012/10/05(金) 02:37:33.81
まともな意見もだせず関係ない話で叩こうとする
嗚呼これがパソコン大先生の遠吠えというやつか
753仕様書無しさん
2012/10/05(金) 02:38:44.02
>>751
ブロックが横に続いてんのは2chだからだと思うぞ
754仕様書無しさん
2012/10/05(金) 03:11:27.93
どうでもいいことに反論するのもアレですが、
一応癪に障るので言っておきます。{ throw exception; }こういう書き方したのは
単に書き込み行数を減らすためです。()のスペースとインデントに合わせた
ブロックの配置は割と一般的な方法でしょ。職場でもC系ならどの言語でも
使える点と、言語に依存しないフォーマッターならどれでも対応してる点、
誰が書いてもブレにくい点から規約になってたりします。
755仕様書無しさん
2012/10/05(金) 09:17:03.22
反論するってことはどーでもよくはないんだよ

ここまでの流れみてて、細かい事例出して例外云々語ってんだなみんな、って印象
プログラム三原則とかに照らし合わせて作りゃいいんじゃないの?
756仕様書無しさん
2012/10/05(金) 12:10:34.02
>>746とかイラッつとするわw
http://kohada.2ch.net/test/read.cgi/prog/1338703896/l50
757仕様書無しさん
2012/10/05(金) 18:05:32.18
この程度で読みにくいとかイライラするようなプログラマはいらねーな。
レベル低い
758仕様書無しさん
2012/10/05(金) 19:50:11.99
これは確かにイラっとするなぁw
759仕様書無しさん
2012/10/05(金) 19:51:07.25
>>758誤爆
向こうに書いたつもりだったわw
760仕様書無しさん
2012/10/12(金) 01:48:16.56
俺は>>746の書き方に似てるから叩かれてる理由がわからんな
統一してくれって書いてるやつがいるが統一されてるし
761仕様書無しさん
2012/10/12(金) 08:22:56.40
>>760
ストライクゾーンの違い、それだけのことだよ
762仕様書無しさん
2012/10/12(金) 13:27:33.21
>>746
>>754
>{ throw exception; }こういう書き方したのは 単に書き込み行数を減らすためです。

javaは知らんが、C#の場合
http://d.hatena.ne.jp/aoki1210/20091007/p1

みたいな話がある。
763仕様書無しさん
2012/10/13(土) 02:24:21.17
こういう勝手をやるのがMSのダメなとこ
catchの中にtry〜catch書かれたときに
throw;なんてされたらさっぱりわからん
764仕様書無しさん
2012/10/13(土) 18:35:28.21
>>762
C++の構文をそのまま持ってきてるだけだけどな
765仕様書無しさん
2012/10/13(土) 20:34:54.06
>>763
げんごしようをりかいしてないことがもんだいなのでは?
766仕様書無しさん
2012/10/14(日) 00:43:46.79
>>765
Vistaを理解してないことが問題
Excel2007を理解してないことが問題
とか言ってるのと同じだろ。ダメなもんはダメなんだよ
767仕様書無しさん
2012/10/14(日) 00:53:52.55
理解してないことが問題だと思う人は、理解せず使えるものを使えば良い。
車に乗るといっても理解を必要とするF1に乗る必要もタンクに乗る必要も
パワーショベルに乗る必要もない。一生一般車だけ運転してれば良い。
768仕様書無しさん
2012/10/14(日) 14:49:49.57
Vistaの不満もOffice2007の不満も、どっちも理解力がないゆえにの部分が大半だけどな
言いたいことはわからんでもないがたとえが悪いだろ

なんにせよ変化に対応できない奴はマには向いてない
769仕様書無しさん
2012/10/14(日) 17:22:20.61
道具を理解しないで許されるのは素人だけだろ

請け負った仕事をしくじって使った道具を
理解出来なくてじゃ許されんだろ
770仕様書無しさん
2012/10/14(日) 17:42:01.42
>>767
>理解してないことが問題だと思う人は、理解せず使えるものを使えば良い。

普通「理解してないことが問題だと思う人」は、理解してから使おうとするんじゃね?
771仕様書無しさん
2012/10/14(日) 17:48:39.62
理解にかける時間が妥当かどうか判断してからどちらにするか決める
772仕様書無しさん
2012/10/14(日) 18:03:37.75
そら、PC使ってるからCPUの仕組みを理解しろとか、半導体物理理解しろって言われたら、理解しなくてもいいだろうけど
マやってて例外理解しろって言われたら、(言われてる時点で恥だが)、理解するしかねーだろよ
773仕様書無しさん
2012/10/14(日) 20:51:38.72
ローカル変数を理解しなかった連中の末路を知らないのだろう
774仕様書無しさん
2012/10/15(月) 07:49:11.85
>>769
難解な新製品を使わずに
手慣れた製品を使えば良い仕事はできる
775仕様書無しさん
2012/10/15(月) 11:51:34.90
>>765
少なくとも、>>746はJavaの言語仕様理解してるし、JAVAで書いてるんだから何の問題もない。
恐らく、>>746であれば、C#で書く場合、ちゃんと>>762の仕様も理解して守ろうとするだろう。

全然問題なし
776仕様書無しさん
2012/10/15(月) 20:48:44.32
もう弄るのは許してやってくれ
スレチ引っ張りすぎ
777仕様書無しさん
2012/10/15(月) 22:13:42.90
C# ほとんんど知らなかったから勉強にはなった
778仕様書無しさん
2012/10/16(火) 23:10:25.19
2chMate使うとよくぬるぽが出るのをどうにかしてほしい
779仕様書無しさん
2013/01/09(水) 23:20:22.34
http://toro.2ch.net/test/read.cgi/tech/1346919580/549-554
例外を正しく使えないプログラマ
780仕様書無しさん
2013/01/10(木) 16:04:58.72
話題の発端は、ここで語るような内容でもないから要らない誘導だろ
誘導元スレのほうでスルーしときゃいい
781仕様書無しさん
2013/07/28(日) NY:AN:NY.AN
多いね。とても多い。

まともに使える人がいなさすぎて、ユーティリティとかでthrows書いたら
catch(Exception e) とか書き出す馬鹿出たりするし、
基本的に共通の実行時例外にラップしたりして使えないマに例外を触らせないようにしてるわ
782仕様書無しさん
2013/08/18(日) NY:AN:NY.AN
Javaの検査例外は最近使わない事のほうが増えてきたな
馬鹿にはthrowsかかせないcatchさせないの、すごく重要だと思う
うまく使えば便利だけど、全員の知識がある程度の水準に達してる前提だから
うんコーダー混じった時点でその前提が崩壊する

で結局意識させない書かせないが最適だと思えてくる
783仕様書無しさん
2013/08/26(月) NY:AN:NY.AN
使えないのが例外だけなら良いんだけどな。
784仕様書無しさん
2013/08/27(火) NY:AN:NY.AN
お行儀の良い使い方ではないけれど、処理抜けを行うgotoとして例外をつかったフレームワーク、
なかなかキてる感あって、嫌いではないなって思った。

本来の意味での正しい使い方ではないと思うけど、
如何にして楽に作るかを突き詰めていけば、こういうのはありかなと思う。
785仕様書無しさん
2013/08/27(火) NY:AN:NY.AN
>>784
構造化じゃ書けないエレガントさってあるよな
Switchの流れ落ちとか
786仕様書無しさん
2013/08/28(水) NY:AN:NY.AN
構造化じゃ書けないとか言いながらswitch文使うとか、意味不明
787仕様書無しさん
2013/08/28(水) NY:AN:NY.AN
cだとswitchのcaseブロックはbreakしなければ下のcaseに流れ落ちることができる

c#などではこれは構造化の観点から禁止されている
788仕様書無しさん
2013/08/28(水) NY:AN:NY.AN
「構造化の観点から」じゃなくて、しばしばバグの原因になってるから、という理由。
Go言語は、fallthrough文を書けばfallthroughする。
789仕様書無しさん
2013/08/28(水) NY:AN:NY.AN
C#のswitchではfallthroughの代わりに、
goto caseをサポートしている。

fallthroughが次のcaseにしか移動できないのと違って
goto caseは任意のcaseに移動できる。
790仕様書無しさん
2013/08/29(木) NY:AN:NY.AN
例外じゃないけど、goto case、便利だよな
あんまり見通しよいコードになるわけじゃないから多用するものではないけど
791仕様書無しさん
2013/08/29(木) NY:AN:NY.AN
フォールスルーを構造化の観点から禁止するなら、
そんな機能を追加するはずがないよなw
792仕様書無しさん
2013/08/31(土) NY:AN:NY.AN
UMLで例外を一生懸命書いてるバカが居たな。
言いたいことは分かるが実装をモデリングすんなよ。
793仕様書無しさん
2013/09/03(火) 01:44:40.37
なんのためのモデリングツールか理解出来ないうちはあんまり役に立たないね
改めてオブジェクト指向が何なのか、MVC、ドメインモデルってどんなのか
みたいなのを勉強しなおしてやっと見えてきたかなーって気がしてきた
794仕様書無しさん
2013/09/07(土) 10:30:00.81
例外処理は急ぎの仕事の時に助かるぐらいのつもりで使ってる。
そして、だんだんメンテナンスムリーなコードが出来上がる。
795仕様書無しさん
2013/09/07(土) 12:21:57.48
例外処理って昔の言語にはなかった
比較的新しい機能なんだぞ?

なんで新しい機能ができたかといえば便利だからだ。

なんで便利なものを使ってメンテンナンス無理なコードになるんだ?

それはお前の各コードが悪い。例外処理ではなく、
単にお前の技術力が低いってことでしかないんだよ。

例外使ったらエラー処理がめちゃくりゃ楽になるんだがねぇ。
796仕様書無しさん
2013/09/07(土) 12:50:47.37
例外で重要なのは例外そのものではなくてその後のfinallyブロックだと思うw
797仕様書無しさん
2013/09/07(土) 12:53:29.04
もう例外なしじゃ生きてけない
いちいち戻値のチェックするとか、原住民の生活って感じ
798仕様書無しさん
2013/09/07(土) 12:59:33.21
>>796
finallyなんて大した機能じゃねーよ。

例外で重要なのは、関数コールスタックを
(途中でキャッチしない限り)
自動的にさかのぼるという機能。

finallyはガベージコレクションなどの
スコープ抜けたら自動的に後始末してくれる機能が
あれば殆ど使わない。
799仕様書無しさん
2013/09/07(土) 14:26:13.24
GCは「スコープ抜けたら自動的に後始末してくれる機能」じゃないし
800仕様書無しさん
2013/09/07(土) 14:29:09.51
> ガベージコレクションなどの

など
など
など
など

などが見えない?
801仕様書無しさん
2013/09/07(土) 14:29:50.18
>>799

http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
ガベージコレクション(garbage collection; GC)とは、
プログラムが動的に確保したメモリ領域のうち、
不要になった領域を自動的に解放する機能である。
802仕様書無しさん
2013/09/07(土) 14:31:49.43
後始末が不要な言語、
不要にできる言語だと、
finallyは殆ど使わないよね。
803仕様書無しさん
2013/09/07(土) 14:36:12.31
斜め上すぎてどう突っ込んだらいいのかさえわからないレベル
804仕様書無しさん
2013/09/07(土) 19:03:54.18
>>803の意訳

突っ込みたいけど突っ込めない悔しい。

と皆思っただろう。
805仕様書無しさん
2013/09/07(土) 19:08:12.94
オマエの脳内の皆とかどうでもいいいから…
806仕様書無しさん
2013/09/07(土) 19:14:55.96
突っ込みたいけど突っ込めない悔しい。

は否定しないんだなw
807仕様書無しさん
2013/09/08(日) 11:36:36.99
>>800
スマートポインタを指して「ガベージコレクトなど」と言うのは、
イギリスを指して「フランスなど」というようなものだぞ。

で、それを指摘されたら「ヨーロッパを知らないのプゲラw」って言うようなw
808仕様書無しさん
2013/09/08(日) 15:15:58.23
どこにもスマートポインタの話なんか
でてきてませんが?
809仕様書無しさん
2013/09/11(水) 00:15:01.61
突っ込みたいとかなんとか、卑猥な話題してんな…

Javaでいうなら7以降のAutoClosableはとても便利になったな
やっとusingっぽい事ができる様になった。これでうんこなfinallyのtry/catchみたいなのともバイバイできる

まぁ、仕事でjava7以降が使える日はまだ遠そうな職場だから恩恵ないんだけどな…(´・ω・`)

---
例外は機能制限されたgotoだから、うまいこと使えない奴がいるとおかしな事になるってイメージだなー
あと、ポリモーフィズムとかそういうのすら知らないような人が基板部分関わると、例外設計がかなり糞い事になってメンテ死
810仕様書無しさん
2013/09/11(水) 00:19:05.14
例外キャッチして数値フラグや文字列フラグで返す処理を量産する馬鹿がいたり
クラスを上ってくるたびに例外捕まえまくってログだけ吐いて投げ直す処理を書いてたりとか、
そういう失敗例も未だにちょいちょい見かける
811仕様書無しさん
2013/09/14(土) 17:48:39.39
例外を使えるプログラマは例外的
812仕様書無しさん
2013/09/17(火) 09:44:07.68
ライブラリがせっかく理想的な例外を出すのにそれを俺様流でぶっ潰すのがうまい奴が大杉
813仕様書無しさん
2014/03/02(日) 10:03:31.97
>>1
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://toro.2ch.net/test/read.cgi/tech/1393660194/90
814仕様書無しさん
2014/04/05(土) 19:58:57.02
例外なんて例外なんだから無視するぜ!!
815仕様書無しさん
2014/04/06(日) 14:05:45.57
少なくともハード屋の書いたソースでコードレビューは通らない
816仕様書無しさん
2014/05/15(木) 01:39:58.96
正しい使い方って誰が決めたの?
817仕様書無しさん
2014/05/15(木) 03:25:33.27
例外を考えた人たち
818仕様書無しさん
2014/06/04(水) 02:41:53.33
例外面倒くさすぎね?
始めのうちはそうでもないけど、時間がたつにしたがって例外部分が膨大に膨れ上がって可読性オワタになるの多すぎなんだが
あとから一部だけ変えようとしても、それがcatchの途中にあったらまた例外から書き直しになるし後ろの別のcatchまで書き直しになるケースも多いし
でかくなってくると自分のコードでも結構きついのに、他人の書いた例外とかほんと無理
もっと短く書ける機能ないのか
819仕様書無しさん
2014/06/04(水) 08:28:10.84
>>818
よくわからないんで状況のサンプル書いて。
エラー処理なんて例外じゃなくてもそうなるんじゃね?とも思う。
820仕様書無しさん
2015/04/17(金) 22:09:45.31
例外をcatchしようという発想が間違いの根元やね
821仕様書無しさん
2015/04/20(月) 01:31:11.13
戻り値によるエラー値のif文判断の脱却が例外catch
でも失敗に終わりそうだね
そもそもオブジェクト指向プログラミングが間違いなんかな?
822仕様書無しさん
2015/10/12(月) 10:43:57.56
受ける会社大丈夫?
下記の条件が全て当てはまる会社にご注意下さい。

・IT系 in Tokyo
・「社名 労基」でググると過去(5年以上前)の2chスレが出てくる
・転職会議で2.5点
823仕様書無しさん
2015/10/13(火) 06:49:27.51
javaでは
} catch (Exception e) {
e.printStackTrace();
}
こんなのサンプルばかり

catchしたら握りつぶせと暗黙的に教えられてるんだから
824仕様書無しさん
2015/10/13(火) 06:51:19.30
性的解析ツール使って、commitさせないように、commitされてもすぐに検知するようにするしかないね
825仕様書無しさん
2015/10/14(水) 03:12:10.85
【 オンラインTCGエディター 】 >>1

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみて。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正。

機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。

下位版の改造および商用利用には、別途で当社との契約が必要。

さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1444545761/-20
826仕様書無しさん
2016/02/11(木) 20:46:06.70
age
827仕様書無しさん
2016/02/13(土) 01:31:37.47
ヘボプログラマは例外クラスを定義することに怯えすぎw
システムで扱う業務例外は多岐に渡るのだから、それを表す多数の例外クラスも必要になるはずなのに、
ありものの例外クラスでなんとかまかなおうとしてまかないきれてない馬鹿ばかりw
828仕様書無しさん
2016/02/16(火) 21:33:44.81
>>827
JavaやC#前提で話すけどさ、

不特定多数から利用される、コアなライブラリなら、
独自例外クラスを定義し、それを投げる方がいいと思う

一方、アプリに一番近い層では、独自例外クラスの手法だと、
作成クラス数が多すぎてプログラムが煩雑になりがち
メッセージの国際化もやりずらい
例外クラスは、なるべく数を抑えて(2〜4くらい)、エラー番号を埋め込んだ方がいい

って思ったりする
829仕様書無しさん
2016/02/21(日) 11:51:52.24
独自例外なんていらなくね?
特にc#だと、チェック有例外が作れないから、例外処理がくそ面倒そう
830仕様書無しさん
2016/02/21(日) 13:27:17.52
>>829
ビジネスエラーを表す独自例外がないほうがエラー処理面倒でしょ
831仕様書無しさん
2016/02/23(火) 08:19:38.81
検査例外ないC#で独自例外作るとか三流だな
832仕様書無しさん
2016/02/23(火) 08:30:17.24
>>831
独自例外を定義してる3流ライブラリもたくさんあるねw
833仕様書無しさん
2016/02/24(水) 01:17:31.30
システムエラーは例外、ビジネスエラーはエラーコードだな。色々考えると、それが正解。
ライブラリがビジネスエラーを投げる仕様なら、呼び出し直後にキャッチしてエラーコード置き換え。
834仕様書無しさん
2016/02/24(水) 01:27:59.38
>>833
つまり、例外機構はシステムエラーのための仕組みということ?
835仕様書無しさん
2016/03/13(日) 08:05:58.22
残業SEは大迷惑!

時間外労働違反となる
契約に作業期限はない
契約の延長がなくなる
健康障害をもたらす
対人障害をもたらす
能力評価が低下する
生産評価が低下する
時間報酬が低下する
学習時間が減少する
副業時間が減少する
訴訟が増加する
失業が増加する
貧困が増加する
独身が増加する
早死が増加する
836仕様書無しさん
2016/03/13(日) 18:04:31.96
FJネクスト迷惑電話のスレが荒れています
837仕様書無しさん
2016/03/13(日) 23:29:20.70
>>833
でもさー、catchしたときに違う処理したい場合ってあるじゃん。
エラーコードみてif文とかで分岐するの?
838仕様書無しさん
2016/05/04(水) 15:10:14.27
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrent(Covenant)が活発な情報交換・交流コミュニティでオープンソース開発されています(プログラマー募集中)

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise氏)がそういう人と話したいそうなので、よろしければツイートお願いします<(_ _)>
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできない情報発信好きアスペルガーw


通話料が激安になるブラステル(050 Free)で、かなり遅延や音声途切れが発生する方は、以下の設定を試してください
○ Wifiと3Gのコーデックは2つ(GSM、G.711u-Law)とも有効にしておく
○ エコーキャンセルをOFF(チェックを外す)にする
○ あとの設定はデフォルトのまま
http://blog.livedoor.jp/gnunobian/archives/52013458.html
上記の設定でも音質が悪い方は、wolfsonの高音質チップを搭載した機種(Galaxy 初代S、S3、S6、 AQUOSPhone ZETA SH-06E、AQUOSPhone si SH-07E、AQUOSPhone Xx 206SH、 Galaxy Note II)に買い換えて下さい。

500円以下の格安SIMで使えて登録・月額無料、IPベース発信なら携帯へは5.5円/30秒、固定へは8円/3分(月額無料でこの価格はすごい!)
http://blog.jikoman.jp/2015/11/brastel-050-free.html

あと、050Freeの起動もしくは発着信が2週間以上ないとプッシュサーバー期限切れでプッシュ着信が出来なくなるので、Llama Location Profilesで1週間に一度050Freeを自動起動するように設定すると、2週間以上経過してもプッシュ着信できます


最後にロケットストーブの焚き口へ超省電力なDC扇風機で風を送ると、横引き煙突が12m以上あっても煙が逆流してきません。
よって、横引き煙突で超高効率な熱回収ができるので薪が少量で済みます
あと、燃焼室の大きさは『無煙竹ボイラMBG150』で検索して参考にして下さい
例外を正しく使えないプログラマ多いね。 その7->画像>5枚  
例外を正しく使えないプログラマ多いね。 その7->画像>5枚
例外を正しく使えないプログラマ多いね。 その7->画像>5枚
14
839仕様書無しさん
2016/05/06(金) 21:15:58.63
>>1
スレッドタイトルがおかしい。

例外処理がおかしい、例外処理がない、エラーハンドリングがないなら分かる。

例外の扱い方というより、例外処理のプログラムが変なのは、ただのプログラミング初心者。
840仕様書無しさん
2016/05/06(金) 22:40:55.77
「。」を多用してるし、ただの2ch初心者かな
841仕様書無しさん
2016/05/07(土) 01:39:27.12
>>840
意味不明
842仕様書無しさん
2016/05/07(土) 02:17:51.24
>>837
そういうことだろう。
ビジネスロジックで、分岐判断してるコードとその結果を判断するコードが
離れまくってるってのは大概問題ありなコードだろうし、直す必要があるって
兆候と見ていいんじゃないかね。
843仕様書無しさん
2016/05/07(土) 08:01:10.42
おいおい何ヶ月前のレスにレスしてんだよ・・・
本当に2ch初心者なんじゃね?
844仕様書無しさん
2016/05/07(土) 11:12:55.39
初心者言いたいだけだろw
845仕様書無しさん
2016/05/11(水) 18:04:18.81
以下ループ
846仕様書無しさん
2016/05/29(日) 10:40:08.08
throwとthrowsの違いが分かりません…。
847仕様書無しさん
2016/05/29(日) 10:55:53.57
throw 投げろ
throws 投げます
848仕様書無しさん
2016/05/29(日) 11:07:31.80
throwが「投げろ」の意味がいまいち分かりませんが…
849仕様書無しさん
2016/05/29(日) 18:52:17.07
throw 今から投げるよんー
throws これは投げるんですよ
850848
2016/05/29(日) 21:26:23.54
>>849
何となくわかりました。

>>847 >>849
ありがとうございました。
851仕様書無しさん
2016/05/29(日) 21:57:12.35
動詞と名詞の違いだろw
852仕様書無しさん
2016/05/29(日) 23:23:42.46
>>851
原形と現在形の違いだろ
853仕様書無しさん
2016/05/30(月) 22:31:24.65
単数形と複数形の違いだろ
854仕様書無しさん
2016/06/05(日) 22:34:55.12
取り敢えずすろうず使っとけ
855仕様書無しさん
2017/06/12(月) 05:36:40.23
嫌だ
856仕様書無しさん
2017/06/12(月) 20:06:05.70
嫌だなんて言われるなんて想定外です
857仕様書無しさん
2017/12/29(金) 21:00:23.49
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

FSCHX3VEAA
858仕様書無しさん
2018/05/22(火) 14:06:14.07
とても簡単な自宅で稼げる方法
参考までに書いておきます
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

WCSBV
859仕様書無しさん
2019/11/20(水) 15:28:46.96
競技プログラマーのことか
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況


-curl
lud20241210192600
このスレへの固定リンク: http://5chb.net/r/prog/1306646249/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「例外を正しく使えないプログラマ多いね。 その7->画像>5枚 」を見た人も見ています:
プログラマーはMacユーザーが多い
プログラマーってなんで不細工で陰湿な男が多いの?
VIPってプログラマー多いみたいだけど普段何作ってんの?
数学ができないプログラマ
テスト描かないプログラマー
bashとEmacsはM1搭載Macで動かないプログラマ気をつ
センスのないプログラマはやめろ
自分に自信がないプログラマー
プログラマーならわかるすごいプログラムゲーム
HTML/CSSが書けないプログラマー
電子工作のできないプログラマは時代遅れ
人生で1度も1番になったことのないプログラマ
モテないプログラマ、クリスマスどーするよ?
バグの少ないプログラマーほど自分を客観視出来る
【IT】能力の高いプログラマーほど数学力より言語能力が高いという研究結果
日経名物記者木村 岳史がIT土方モメンに喝!仕組みを考えない「自称プログラマー(コーダー)」はエンジニアにあらず!
優しいプログラマーのお兄様方教えてください。
プログラマの仕事着=私服。スーツ?ありえないw
日本のプログラマーのレベルが低いのって会社でちゃんと教えないからだろ
【IT】人気が下降しプログラマの求人も少ないプログラミング言語ワースト10は?
メモリ管理やポインタすら使えないやつがプログラマ名乗ってるのクソ笑えるんだが😅
プログラマ川柳
プログラマー組合
腱鞘炎のプログラマー
田舎でプログラマやってるやつ
執筆するプログラマー
プログラマーの時給
プログラマと血液型
独り身プログラマ
プログラマーの子育て
30代のプログラマーいる?
プログラマをPGと呼ぶ奴はバカ
プログラマーの川柳・俳句
馬鹿プログラマの集会所
筋トレしてるプログラマー
徹夜したプログラマー
プログラマのIQ
使えるプログラマになりたい
派遣プログラマの面接
A型のプログラマーは神
派遣プログラマよ
プログラマの借金事情
プログラマーは売春婦と同じ
独身プログラマの作る料理
プログラマの学歴ってどうよ?
プログラマに復帰したい
プログラマーと風呂
プログラマの出会い
プログラマーの転職
プログラマーはきもい
プログラマーの食事
プログラマの雑談部屋 ★79
プログラマの雑談部屋 ★84
プログラマの雑談部屋 ★172
認知が歪んでいるプログラマ
プログラマの座右の銘
プログラマーの転職
プログラマーの昼食
プログラマの最終学歴
40代のプログラマー
自分の子をプログラマにする?
英語が苦手なプログラマー
声優プログラマって
プログラマとテスター
03:54:16 up 18 days, 14:18, 0 users, load average: 11.35, 9.63, 8.90

in 0.074272871017456 sec @0.074272871017456@0b7 on 123017