ボボボーボ・ボクは例外処理が嫌いなんだな
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG何の例外が飛んでくるかわからないクラスなんて怖くて使えない
そもそも例外処理って大域ジャンプだろ、
そんなもの怖くて使えねーよ
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGhttp://japan.cnet.com/news/ent/story/0,2000047623,20069128,00.htm
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGそうです。
日本の特許庁の立場は、それは裁判所の扱う問題で、
特許庁は、初めての申請であればそれを受理する、というものです。
0242デフォルトの名無しさん
NGNGEclipse3.0ではそのと挙問題を見事に解決しているぞ。
もうひとつ種類の異なるウィンドウに表示されるようになることで
解決したんだから無問題
0243デフォルトの名無しさん
NGNGそれだったらCode Templatesを自作してしまえばいい。
コードアシスト機能でもパターンを追加すると楽だ。
それと、Jakarta Velocityも使え。
EclipseのVelicity UIプラグイン、 Simteecプラグインを使うと楽だ。
0244デフォルトの名無しさん
NGNGJavaScriptのポップアップ特許を思い出したよ。
無効になったけどなw
0245デフォルトの名無しさん
NGNG使える気がする。
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG>245は次に、例外使った処理ジャンプを「発明」する!
0248デフォルトの名無しさん
NGNGそこが源流となる例外を放つケースは無いと断言出来る。
例外は全てその下のレイヤー(APIとか標準ライブラリ)から飛んでくる。
そして、それらの例外は復旧不能なものが殆どで、例外が起きた時点でアボーンが常。
だったら、自分の書くコードでは関数外例外は禁止した方が
書くコード量が減って見やすくなっていいんじゃないかにゃ〜ん
0249デフォルトの名無しさん
NGNGちょっと欲しい
0250デフォルトの名無しさん
NGNGドカタ作業ばっかやってると偏るぞ……
例外もいちど復習してこいや
0251デフォルトの名無しさん
NGNGいくらドカタでも、そんなコードばっかり書いてると首になるぞ?
0252デフォルトの名無しさん
NGNGムダな経験だたネ
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG同意
アプリケーションレベルのオブジェクト間通信って関数呼び出しだけに
マッピングするとは限らんので、エラー通知の汎用的な解として
例外はいまいちしっくりこない。
全部例外安全にするのもコスト(コード的にも、実行時的にも)がかかりすぎるし、
そうでない場合は、関数呼び出し順序等に強い依存関係が生まれそうでこわい。
0255デフォルトの名無しさん
NGNGまとめて逝って良し
プログラマの裁量範囲でうまく使え
0256デフォルトの名無しさん
NGNG裁量範囲で例外は使いません。
0257デフォルトの名無しさん
NGNG裁量って何か知ってるか?
0258デフォルトの名無しさん
NGNG> 全部例外安全にするのもコスト(コード的にも、実行時的にも)がかかりすぎるし、
同じことを、
result1 = func1(arg11, ...);
if (result == -1) {
// ああした
}
result2 = func2(arg21, ...);
if (result2 == -1) {
// こうした
}
でやるより簡単だから、例外が最近の言語にはあるんだが。
callerで処理すれば済めば簡単なんだが、
callerのcallerのcallerで処理しないと行けない場合大変だ。
実際qmailのコードをみるとほとんどがエラー処理だ。
機能をprocessに分割しているserverでもまじめに書くとああなる。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG(呼び出し前と例外発生後で状態の変化がない事)の事です。
>>258
func1の実装とそれを呼び出している実装の関係が汎用ライブラリのコードと
アプリケーションコードの関係だってんなら同意するけど。
コンテキストを多く持つAppレベルのオブジェクトの場合、強い例外安全を
各メソッドで実現するコストが高すぎるってのが、私の感覚。
勿論、全メソッドで強い例外安全を確保して再利用性を高めうようって発想も
わかるけど、そもそも、Appレベルのコードって再利用する事自体少ないし。
ライブラリってんなら話は別だけど。
0261254=260
NGNG0262デフォルトの名無しさん
NGNGまあ>>258のコードは冗長だけど
見通しは良いわな。
try{
func1(...);
func2(...);
func3(...);
func4(...);}
catch( exception1 e){ ...}
catch( exception2 e){ ...}
catch( exception3 e){ ...}
catch( exception4 e){ ...}
これでは、すっきりしているが相関がわからない。
そこいら辺の情報がスッポリ抜け落ちているからな。
また、どの関数がどの例外を投げる可能性があるのか
わからせる為に、列記しなきゃならないってとこ
はっきり言ってダルいっしょ。IDEのサポート無しじゃ書いてられないよ。
現にSTLportとか守ってないしな、駄目じゃん標準ライブラリが守らないんじゃw
まー、こーいうとこはまだ改善の余地ありとか思う。
0263デフォルトの名無しさん
NGNGpublic void finc1() {
try{
} catch (Exception1 e){ ... }
catch (Exception e){ ... }
}
とメソッド内に納めると思うのだが。
0264デフォルトの名無しさん
NGNGExceptionクラスを継承してな。
public class Exception1 extends Exception {
public Exception(){
super("original exception message.");
}
public Exception1(String message){
super(message);
}
}
みたいにな。
0265デフォルトの名無しさん
NGNGimport java.util.ArrayList;
//略
private ArrayList exceptionArray;
public void finc1() {
try{
} catch (Exception1 e){
exceptionArray.add(e);
e.printStackTrace();
}
catch (Exception e){
exceptionArray.add(e);
e.printStackTrace();
}
}
こうやって例外をキャッチするたびにArrayListに例外オブジェクトを蓄積してゆく。
そうすると例外情報が上書きによって隠蔽されることもなく、
欲しい例外情報を確実にはき出してくれる。
0266デフォルトの名無しさん
NGNG例えばゼロ除算だが、これの例外処理って必要だろうか?
例外として起こりうる可能性がある以上設けるべきだろうか、
しかし、そもそもまともなコードを書いていればゼロ除算など
ありえない訳で。
ありえないならそもそも例外なんて考えなくていいんじゃないか
みたいな。
また例外というか、コンピュータにおけるエラーって極端に言えば
1、ハードの障害によるもの
2、オペレーターの入力ミスによるもの
この2点しかありえない訳じゃん。(バグを除く)
だったら、この2点だけ対象とした特例的処置を設ければ
それ以外の部分ででエラーというものを意識する必要なんて
別段ない気がするんだよね。
0267デフォルトの名無しさん
NGNGゼロ除算はJavaなら無問題だが。
では新たにそういうものを実装するにはどうすればいいか?
RuntimeExceptionクラスを継承するが
それをなにかしらクラスに組み込まないといけない。
0268デフォルトの名無しさん
NGNGデータの実処理をする部分を
分けて作ればいいじゃん。
だいたい二度手間になるけど。
0269デフォルトの名無しさん
NGNGその二点だけじゃないんだよ。
リリースされて顧客が実際に使ってみて
初めて解るような潜在的バグというものが隠れている。
顧客に気づかれる前にこちらで処理するにはテストケースを
作るのだが。例外があるなら例外を積極的に優先的に使った方がいい。
キャッチされるかも知れない例外はすべてとらえておくべき。
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGそれ大雑把すぎじゃないの
>>258の例で言えば
try{ func1(); } catch(exeption1 &e) {};
try{ func2(); } catch(exeption2 &e) {};
try{ func3(); } catch(exeption3 &e) {};
try{ func4(); } catch(exeption4 &e) {};
と書けばいいだけで。
>>265
C#ではInnerExceptionって親例外を参照するプロパティがあるので
ArrayListに格納しなくても連鎖的に保持できるよ。
0272デフォルトの名無しさん
NGNG亀レスだが嘘書くな。特許の三つの条件言ってみろよ
0273デフォルトの名無しさん
NGNGfunc1がexeption1「しか」throwしないなら、ね。
func1〜4それぞれがexeption1〜4の全てをthrowし得るならどうする?
0274デフォルトの名無しさん
NGNGConnection refused
0275デフォルトの名無しさん
NGNGC#ではJavaにあるthrows宣言が存在しない対策をどうとっているのか是非とも教えて遅れ。
0276デフォルトの名無しさん
NGNGthrowsに対応する機能はないよ。ノーガード。
throwsネタは21世紀における新宗教論争だからここでは意見してあげないw
C#作者の考えはこんなかんじ
http://www.artima.com/intv/handcuffsP.html
0277デフォルトの名無しさん
NGNG> 例えばゼロ除算だが、これの例外処理って必要だろうか?
必要に決まってんじゃん。
たとえばその例外発生元がプラグインだった場合、
プラグインだけを切り離さなければならない。
全部落ちる必要はないし、その程度でメインのプログラムが落ちたらマヌケだろ。
プラグインじゃなくても、ゼロ除算により「その機能」が
使えないだけで他に影響ない部分もある。
他にも例外発生を分かりやすくするためにログに出力したり、メールで送信する場合も有る。
例外発生してそのまま処理を進ませられない場合でも、例外の処理をすることはある。
ただ、例外を処理するのはいいが、ログに出力しただけで、
例外が発生してない場合と同じ処理を続行するなんてコードを書かないこと。
たとえば>>234のEclipseの自動生成されたtry/catchブロックのようなもの。
例外の基本は上位の関数へ、そのまま/後処理をして/例外の種類を変えて throw。
スタックの最後の部分で例外処理。途中でもみ消したい場合のみ途中で処理。
0278デフォルトの名無しさん
NGNG>ただ、例外を処理するのはいいが、ログに出力しただけで、
>例外が発生してない場合と同じ処理を続行するなんてコードを書かないこと。
理由を聞きたい
0279デフォルトの名無しさん
NGNGまずゼロ除算というのはバグでしか発生しないよね。
そうするとつまり例外機構とは、バグが発生元なる例外も対象としていると考えて良いの?
自分としては、本来は含まれない、含まれないことが望ましいバグというものの為に
リソースを割り振るというのが、なんか引っかかるんだよね。
リリースビルドに、assertマクロをそのまんま残している感じで釈然としない
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG関数側はどう返事したらいいんだ?
例外か返り値で返すしかないだろ。
返り値をエラー識別子なんぞに使いたくないから、
例外を返すんだ。わかる?
なんでゼロ割の話を特化させてるんだ?
ゼロ割を回避できるロジックが別にあるなら回避して、
無いなら例外だすだろ。普通は。
0282デフォルトの名無しさん
NGNGもしかして<fenv.h>すら知らない人?
C++の例外うんぬん以前に、レベル低すぎて話にならない。
http://www.opengroup.org/onlinepubs/009695399/basedefs/fenv.h.html
まあ除算する前にゼロチェックが有効な局面もあるけどね。
と馬鹿な反応をされないように書いておくよ。(これが例外処理)
0283デフォルトの名無しさん
NGNGC#はバグを減らすことよりも利便性を重視したからthrowsをはずしたんだと思っている。
0284デフォルトの名無しさん
NGNGリンク先読んだか?そんなこと言ってないよ。
0285デフォルトの名無しさん
NGNG彼が本当のことを言わないのはほとんどが
お金のためなんだよ
0286ぽろじょあ ◆niBmDfC40k
NGNG0287デフォルトの名無しさん
NGNG0288ぽろじょあ ◆niBmDfC40k
NGNGぽろじょあ#ぽろっぽ
0289デフォルトの名無しさん
NGNG0291NaN(>>282=>>287)
NGNG0292デフォルトの名無しさん
NGNG,、ッ.ィ,
,:'゙ ';
(( ミ,;:. ,ッ )))
゙"'''''"゙
もふっ
ハ,_,ハ
,:' ´∀` ';
ミ,;:. ,ッ ノノ
゙"'''''"゙
ポィン
ハ,_,ハ ポィン
,: ´∀` ';
ミ,;:. ,ッ
゙"'''''"゙
ヽ ili /
- -
スタッ
ハ,_,ハ,
n' ´∀`,n,
ミ,;:. ,ッ
`'u゛-u'
ズビシッ
ハ,_,ハ
,:' ´∀`';9m <age!
ミ,;.っ ,,ッ
ι''"゙''u
0293ぽろじょあ ◆niBmDfC40k
NGNG0294ぽろじょあ ◆niBmDfC40k
NGNG0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNGいちいちVectorに例外をため込む必要がなくなるで。
org.apache.commons.lang.exception.NestableException
http://www.jajakarta.org/commons/lang-2.0/ja/withoutPrimary/org/apache/commons/lang/exception/NestableException.html
org.apache.commons.lang.exception.NestableRuntimeException
http://www.jajakarta.org/commons/lang-2.0/ja/withoutPrimary/org/apache/commons/lang/exception/NestableRuntimeException.html
0297デフォルトの名無しさん
NGNGC++スレで536が叩かれてます。助けに行ってあげてください。
http://pc5.2ch.net/test/read.cgi/tech/1090180012/536-
0298デフォルトの名無しさん
NGNG期待通りの動きだ。
0299ぽろじょあ ◆niBmDfC40k
NGNG0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNGそっから例外が飛んでくるとクラッシュしたりして大変だったね。
最初何が原因かわからなくてさ。
おかげで障害票てんこ盛り。
スレッド頭でキャッチしとけってーの。
スレッド越しの例外投げって危険極まりないね。
0306デフォルトの名無しさん
NGNG勝手に起動したスレッド上で。
全然異常系テストしてねーなってことが判った。
結局そのライブラリは欠陥持ちだってことで、どうしようもないから
ミドルウェアのソース貰って修正したさ。
アホらし。
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG俺が言いたいのは
例外とスレッドは相性悪いってことだよ。
C++は言語仕様で保障されてないからそれ以後怖くてな、
ミドルウェアの解析までやらされたんだぜ?
例外の仕様がこんなんじゃやってられねーよ。
クソコード書いたミドルウェアのアホ(逃げた)が一番悪いんだが、
不慣れで例外使われるより値返された方がマシだろ。
0309デフォルトの名無しさん
NGNGだけどな、任意の箇所で捕捉できなきゃただの爆弾だよ。
スレッドまたいだだけでクラッシュするのは頭悪いとしか言い様がない。
今回みたいな欠陥ライブラリは、外からじゃどうしようもないだろ。
ソースが参照できたからよかったものの、
無かったらプロジェクト消滅してたぜ?
0310デフォルトの名無しさん
NGNG返された値をチェックしないでスレッドまたぐのとどう違うんですか?
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNGあのライブラリね。
俺もはまったことあるよ。
try・・・catchって書けば普通に動くようになるよ。
0317デフォルトの名無しさん
NGNGバグ対策とバカ対策
http://pc5.2ch.net/test/read.cgi/tech/1067106300/
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG│ ヽ( д` ; )ノ
│ へノ /
└→ ω ノ
>
0321デフォルトの名無しさん
NGNG| ( *´Д`)
| 人 ヽノ、
└―( ヽ_つ,,,つ
プスッ ) ))
(__))
0322デフォルトの名無しさん
NGNG例外だからこそ、すぐに問題が発見されたのであって、
エラー原因を返り値で渡し損なっている、
って問題ならもっと発見しにくかったはず。
>>305>>306までの愚痴はまあ分かる。
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGちゃんとロギングしろよ。
今ならアスペクト指向プログラミングによって
さらにロギングが楽になったぞ。
0325デフォルトの名無しさん
NGNG得体の知れない処理系なんか仕事で使えるかっての
0326デフォルトの名無しさん
NGNG処理系というほどのものじゃないだろ。
JBoss
Spring
Seasar
など、盛りだくさん。
勝手に選べ。
いまならDIというオマケつき。
0327デフォルトの名無しさん
NGNG世の中には「自社開発でない=得体の知れない、使えない」っつー思考する所がゴマンとあるのさ・・・
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGどこ?
0332デフォルトの名無しさん
NGNG気になるんなら、検索するか
日本全国の女性と付き合って「ボボ!」って
叫んでみて、ひっぱたかれたらそこだッ!
0333デフォルトの名無しさん
NGNGnewの再配置構文を知らないみたいね。realloc的なものが
ないわけないでしょ。
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNGアスペクト嗜好の資料を読んで
ログに使えると思った奴は素人
■ このスレッドは過去ログ倉庫に格納されています