952 :
仕様書無しさん:02/11/08 23:48
>>950 あ、1 に 「質問する前に Web で検索しろ」 って書いといて。
あと 「丸投げ/宿題おとこわり」
>>950 割り算はコストが高い(高クロック消費)って言うのを聞きかじって
そうしたのかな?
こーゆう全体を見た結果なのか、思いつき思い込みでこうなってるのか
分からないプロが一番嫌だね。
954 :
仕様書無しさん:02/11/09 00:01
コンパイラ作る立場として
糞ソースは参考になるよ
>>953 わり算がイヤなら変数を用意するかなぁ。
956 :
仕様書無しさん:02/11/09 00:11
エラー処理って、きっちり分かってる人は少ないよな。
(俺もえらそうなことはいえない)
エラーの種類分け
・プログラムエラー
・実行時例外
・システム例外
対応方針
・発生しないようにプログラムコードを書く
・発生した場合に、実行停止しないように続行するよう記述する
・発生した場合に、実行を即時停止する
・安全な方に回避する
対応方法
・エラーメッセージをそのまま出力する
・ユーザーには詳細を見せない(管理者のみ見られるようにする)
・ユーザーに詳細を見せる
・フラットファイルに出力する
・データベースに出力する
たかだか3種類の軸を設定しても、いくらでも選択肢を想定できる。
すべてのシチュエーションを完璧にカバーするのは難しい、っつーか無理に近い。
でも、「見えないようにするのがエラー処理」と考えている奴が多いのも確か。
エラーを見せるのも立派なエラー処理なのに。
CS(Computer Science)のMSだったらな・・
958 :
仕様書無しさん:02/11/09 00:39
>>956 プログラムエラーと実行時例外はどう違いますか?
プログラムエラーって普通、論理エラーの事を指さないか?
ユーザーエラーでもないしな。
>>956 まぁ同意なんだが、エラーを出さないのも同じように重要かと。
いちいちダイアログが出るのは正直ウザイ。
メカ系ではメカストップが付いてるので、いちいちエラー処理を書かないこともある。
未だにエラー処理は悩むので、コーディング規約よりエラー規約を
プログラマレベルで統一するのも意味あるかもです。
ま、無理だろうけど。
>>956 何かの本(UMLモデリングのエッセンスだったかな?)で、
「例外とは事前条件が満たされているのに、
事後条件を満たすことができなかった場合である」
と書いてあるのを呼んだ覚えがあります。
しかし、その中の実行時例外とシステム例外に、
どのような違いがあるか分からないので教えていただけませんか?
もしくは出典を・・・
1+1と入力して3がでる、という類のものがプログラムエラー?
バグ?
どうやって、実行時にみつけるの?
>>960 「規約」ではなくて「仕様」にするべきと思われ。
あんまエラーの分類については意識したことないんだが、O除算エラーや、
short×short=shortでオーバーフローとかはどれなんだ?
malloc失敗とか、ファイルオープン失敗は実行時エラーなのか?
>>963 「仕様」では当たり前すぎるような気がする。
○○という場合には△△といったテンプレートのような存在が出来ればいいなぁ、と。
これって「仕様」じゃないよね。
ユーザーエラーとかシステムエラーとか論理エラーとかいろいろあるけど
どれがどれに当てはまるのか良く分からない。
まあ、完全にわからないというわけでもないんだがこれらの違いによって
書くエラー処理の方法が変わる気がしない。
エラーは全部throwで例外を発生させればいいんじゃないかと思う。
まぁまぁ、エラーもバグもどっちが出たって
上から怒られんだから、どっちでも大差ないって
>>966 漏れは、例えば数字入力するエディットボックスで、英文字キー押した途端、
例外発生して終了するようなソフトは使いたくないぞ。
>>967 ユーザーエラーは上から怒られない。発生しないに越したことはないが
発生するのは避けられないからその時どうするかというのは重要。
というか話に参加しないならでてくんな。
>>965 >○○という場合には△△といったテンプレートのような存在が出来ればいいなぁ、と。
それなら設計段階の規約で、プログラマで統一するものではないような。
>>967 仕様としてエラーをだすなら怒られないよ。
>>968 トラップすれば良い。
内部でバグが発生した場合、例外発生して終了するだけじゃ問題解決の手がかりが残らない。
メッセージを表示するとかログを取るとかするはず。
だから最終的にはすべてのエラーはトラップされるのが良いと思う。
そのエラーのトラップの処理で十分吸収できると思うけど。
あれ? トラップという言い方はおかしいのかな? キャッチと言った方が良いのかな?
>>971 ネタか? キー入力ならisdigit(c)とかマスク処理するやろ。 何でも
かんでも例外をスローされたら堪らんぞ。
>>973 当然だわな。そのルーチン内でハンドリングできないようなエラーなら、
上に例外をthrowするしかないだろうけど。
>>974 言語処理系にもよるけど、プログラム全体の処理に関わるエラーはスロー
するけど、関数の呼び出し元で結果判断できるようなエラーは戻り値で
返すようにしない?
エラー処理については以下が基本。
1)エラーの捕捉は捕捉が可能な箇所で(通常は低レベルな層)
2)エラーの処理(判断)は、より判断材料が揃っている高レベルな層で
エラー処理の面倒さというのは、以下のような点にあるように思う。
・上記の二条件を満たそうとすると、必然的にエラーの上層への
伝播が必要となる。言語レベルで例外機構をサポートしているならば
これはさほど問題ではないが、Cのようにそれをサポートしない言語や
C++のように例外が後付けで導入されたため、例外に関する仕様その他が
腐っている言語もある。
・高レベルな層がエラーに(親切に)対応するには
-どのようなケースでどんなエラーが発生する可能性があるか
-それは回復可能なエラーか。どのような回復手段が望ましいか
といった点を考慮する必要が有る。
これには低位な層の実装への知識や上層・下層間のかなり緊密な連携が
しばしば必要になるが、云うまでもなくカプセル化の概念には真っ向から
反する。
現実世界のアナロジーで考えれば、上司への報告は、階層を経る毎に
抽象度や粒度が変化するであろう。取りあえずthrowすれ、という
中間管理職は有能とは見なされない。
# が、各層で一々エラー処理をやるのはやっぱり面倒....
978 にはおおむね疑問だが、
> 言語レベルで例外機構をサポートしているならば
> これはさほど問題ではないが、Cのようにそれをサポートしない言語や
> C++のように例外が後付けで導入されたため、例外に関する仕様その他が
> 腐っている言語もある。
これには疑問だな。
直ちに適切なエラーコードを return すればいいだけだ。
それとも、戻り値をチェックするのに不満があるのか?
例外が使えるとスッキリ書けるのは確かだけど。
>直ちに適切なエラーコードを return すればいいだけだ。
戻り値の取りうる値がすべて正常値のときはどうすればいい?
int div(int a,int b){ return a / b;}
なんかは。
>それとも、戻り値をチェックするのに不満があるのか?
ある。
めんどくさい。
>>981 次スレ。
> int div(int a,int b){ return a / b;}
戻り値の取りうる値がすべて正常値の関数は普通、絶対にエラーが無いか、書かない。
> めんどくさい。
まあ同意するけど、仕事でやる時にまでブーブー文句言う程ではない。
983 :
リアル厨房:02/11/09 03:18
そうか、戻り値ありの関数にはエラーコードを返させれば
良かったんだ。何も知らなかった。
今までは、エラー検出時にはソフトウェアリセットの操作bitを
叩いて自爆するように組んできたんだけど、少しは考えるか。
Device設計するハード屋には必ずソフトリセット機能による
完全復帰を要求してるし。
984 :
仕様書無しさん:02/11/09 03:19
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 1000取りたい!
\________ _______
|/
∧,,∧∩
目ミ ゚Д゚ ミ
|| (ミ ミ
|| ミ ミ〜
|| ∪ ∪
まもなくここは 乂1000取り合戦場乂 となります。
\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
http://big.freett.com/scheme_a/num1000.swf
988 :
リアル厨房:02/11/09 03:26
>983
デバッグ初期のボードなんか、意味も無く初期リセットを繰り返すので、
LEDが全点灯/消灯を繰り返すもんで、美しいぞ。
バグったって分かり易いだろう!
今だ! 1000ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
今だ! 3ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
アヒャーー
∧∧
(゚∀゚ )⌒ヽ ≡≡ = = -
,.、,,U‐U^(,,⊃_ /i ≡≡≡ = = -
;'゚∀゚ 、、:、.:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i = ≡≡≡ = = -
'、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
`" ◎ ''`゙ ◎ ´´ - = ≡ = = -
アヒャーー
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚∀゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
993 :
仕様書無しさん:02/11/09 04:02
(⌒, -- 、⌒) / ̄ ̄ ̄ ̄
_ Y Y _ < 1000getレースですか?
ミ \| ・ . ・| / 彡 \____
@ゝ. ^ ノ@
994 :
仕様書無しさん:02/11/09 04:03
/)
、2)Y⌒ ⌒フ +
ッ-i'´ ⌒フ
(´ ,.-゙ー-、 ろ、
* シ彡ノ"ミVv )
* ノノノノ"ヽヽヽミ シ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
. ,l')∩ ∩ |)|ヾ ミ < 1000!!
,○)、 ▽ ノjl| YY゙ \_______________
{_∃ `l____/⌒'i|
 ̄ Yl"゙⌒lY | +
,ト|__/ハ i、
,iニiニiニユ ゙h,,)
ノtYTYヾ\
/''フ''''ー<"ヽ、
/__ノ \ノヽ、
(__) ゞ__)
995 :
仕様書無しさん:02/11/09 04:04
。1000取り合戦に遅れちゃうよ〜〜〜
。 ∧_∧。゚
゚ (゚ ´Д`゚ )っ゚
(つ / アァァァァ
| (⌒)
し⌒^
1000!!!
997 :
仕様書無しさん:02/11/09 04:06
_∧ ∧ ∧ ワーイ _∧ ∧ ∧ マテー
(_・ | (・∀・) (_・ | (´∀`)
| Ю⊂)_√ヽ | Ю⊂)_√ヽ
(  ̄ ∪ )^)ノ (  ̄ ∪ )^)ノ
|| || ̄|| || ≡≡≡≡ || || ̄|| || ≡≡≡≡
|| || || || パカッパカッ || || || || パカッパカッ
1000!!!
GETTTTOOOOOoooo...
999 :
仕様書無しさん:02/11/09 04:07
1000
1000 :
仕様書無しさん:02/11/09 04:07
/:|. /:|
/ .:::| / ::|
| ...:::|_ / :::|
i  ̄ ̄⌒゙゙^――/ ::::::|
/ :::::::::\
/|・\ ./・> :::::::::\
/ミ\ \ / /彡 i し./:::::::\
/ ミ\.\ヽ|||liiiii||/ /./彡 ノ (::::::::::::::::::\
/ ミ\\|||iii||l//彡 '~ヽ :::::::::::::::\
/  ̄  ̄,,、 /:::::::::::::::::.\
.. ガ━━━━━/ \ / ,,____ _,/ ̄ \ \ /::::::::::::::::::::::::::::\━━━━━ソ!!!!!
\ |.. | /└└└└\../\ /:::::::::::::::::::::::::::::::::/
\ ∨.|lllllllllllllllllllllllllllllllllllllllll| /::::::::::::::::::::::::::::::::::/
\ |.|llllllllllll;/⌒/⌒ | ::::::::::::::::::::::::/
\ |.|lllllllll; ./ . . | :::::::::::::::::::/
/ |.|llllll|′ / . | | ::::::::/|
/ |.|llll| | .∧〔 / ::::::::::::::::\
/ }.∧lll | ../ / / :::::::::::::::::\
/ /| \┌┌┌┌┌/./ /::: :::::::::::::::::\
/ ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /::::::::::: ::::::::::\
/ ヽー─¬ー〜ー――― :::::::::::::
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。