ボボボーボ・ボクは例外処理が嫌いなんだな
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG何の例外が飛んでくるかわからないクラスなんて怖くて使えない
そもそも例外処理って大域ジャンプだろ、
そんなもの怖くて使えねーよ
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アスペクト嗜好の資料を読んで
ログに使えると思った奴は素人
0337デフォルトの名無しさん
NGNGこれでcatch all
0338デフォルトの名無しさん
NGNGcatch(Throwable e){
//>>1-337
}
0339デフォルトの名無しさん
NGNGExceptional C++とかぐらい読んでくれないかなあ。
0340デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNGlonghornは例外処理を持つ言語でAPIを全て設計し直しだから、
ちょっと期待しているんだけど。
ただ、MSは基本部分のエンジニアは優秀な人をお金出して呼んでいるけど、
周辺や実装部隊はイマイチだから、とんでも例外設計の可能性もあるなあ。
0345デフォルトの名無しさん
NGNG0346344
NGNG0347デフォルトの名無しさん
NGNG例外キャッチしなくてもコンパイルとおるんじゃないか?
あんまいい作りとは思えんが
0348デフォルトの名無しさん
NGNGAPIの設計はどうなんだろうねえ。
MSDNをちらっと見てみたけど、概説はまだないね。
0349デフォルトの名無しさん
NGNGttp://msdn.microsoft.com/vcsharp/team/language/ask/exceptionspecs/default.aspx
0350デフォルトの名無しさん
05/02/08 17:38:03画面ポップアップMSGにだすことは可能ですか
0351デフォルトの名無しさん
05/02/08 18:58:540352デフォルトの名無しさん
05/02/08 19:24:35デバッグ中のチェックコードはassert
0353デフォルトの名無しさん
05/02/08 23:50:24bool OresamaFunc()
{
try{
if(hogehoge){
return false; // Error
}
// いろんな処理・・・
}catch(...){
//なんか例外出たのでエラーとする
return false
}
return true;
}
これじゃだめ?(´Д`)
0354デフォルトの名無しさん
05/02/09 00:27:43↓こっちのが幸せな気がしないかい?
void OresamaFunc()
{
if(hogehoge){
throw OresamaError;
}
// いろんな処理・・・
}
0355デフォルトの名無しさん
2005/06/19(日) 23:21:33bool で true false 以外に unknown として例外を返す必要があるとは思わないのか?
OresamaFuncは正常に処理できた実行結果としてtrue falseを返す訳だから
そもそも処理自体が行えなかった場合にはunknown(処理できなかったよ)として
どういう理由で処理できなかったかの例外を関数の呼び出し元に飛ばすべきだろ。
例外発生時に「あぁ、このエラーは漏れの処理ではありうる事なんだYo」と、
呼び出し元が考えるか、「何じゃこりゃ?」と考えるかは
OresamaFancが判断すべき状況じゃないからとりあえず上に例外を投げるんだ。
そしたら、OresamaFancを呼び出した奴が例外を受け取ったときに
適切に判断してくれる(はず)ってのが例外のそもそもの考え方じゃねぇのか?
0356デフォルトの名無しさん
2005/06/19(日) 23:29:17処理が行えたらtrue で行えなかったら false っていうレベルの関数なら
無理に例外投げないで353の実装でもいいと思うけどな。
呼び出し元で
if (OresamaFunc()){
OredayoOre();
}else{
Shoboon();
}
っていう書き方できるし、そっちのほうが漏れ的には好みかな。
例外機構を使うと
try{
OresamaFunc();
OredayoOre();
}catch(OresamaError e){
Shoboonn();
}
見たいな感じで、if文を目の敵にしたのはいいが、
本質的に何も変わらないコードっつーのもなんだかなぁ。
0357デフォルトの名無しさん
2005/06/21(火) 02:12:01B「ミスも少ないですよね」
C「例外はタイピング早いですよね」
A「例外はタイピングしないよ。なあ?」
B「しませんよ、例外は」
0358デフォルトの名無しさん
2005/06/26(日) 00:32:33話になんねぇよ。Unknownって何だよ。意味わかんねぇ。
SQLやりすぎて頭おかしくなった糞コボラ?
BOOLは2値を返す。それが全て。
0359デフォルトの名無しさん
2005/06/26(日) 00:39:31失敗も含めると、結果が2値に収まらないのが問題なんだよ。
0360デフォルトの名無しさん
2005/06/26(日) 00:43:06C言語なみのバカだなw
0361デフォルトの名無しさん
2005/06/26(日) 00:44:320362デフォルトの名無しさん
2005/06/26(日) 01:00:10■ このスレッドは過去ログ倉庫に格納されています