アカウント名:
パスワード:
NT3.5から3.51に上げた時、APIの挙動が変化してアプリが動かなくなった思い出が。
# OSのAPIの復帰値って、滅多な事では変更されないと思っていた若い頃……
Windowsだと、INVALID_HANDLE_VALUEが-1なんだよね。で、0が、「成功」と「その他」の二種類に分かれてる。
更に、0は、デフォルトハンドルの意味まであって、戻り値がエラー以外の3種類ってケースがかなり多い。Win16で無理やりサイズを縮小する必要性と、286のセグメントでFFFFはハードでエラーを弾けるってのが大きかったのかなぁと。
ま、そもそも、Unix系で「エラー」と「それ以外」の二種類しかなかったのが、現代的観点だとお粗末なんで、寧ろ罪はUnixにあると、個人的には思う。
ところがだな、Windowsの場合大抵が"GetLastErrorでエラー原因を取得してください"なくせにAPIのとりうるエラーコードがほぼわからない(UNIXならこれこれのときはEほげほげ、ってmanに書いてある)のでてんで役に立たない。# CreateMutexで "パスが見つかりません" が返されたことすらあるのだが、# そんなもの予測してコード書くなんて私にはできないし、だいたい何が原因なのかもさっぱりわからない。
Windozeのエラーが使えないって点は同意。ってか、M$のエラーメッセージは全般的に的外れが多い。
尤も、NT系は、マイクロカーネル化で、サブシステム由来のエラーが予測不能ってのと、セキュリティ関係でエラー詳細が返せないって理由もある。
本筋だと、クライアント-サーバモデルを形成して、両方で全エラーケースをチェックするべき。だが、これを真面目にやると、人間が管理できる量を超えてしまうのが実情なんで、ままならないねぇ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生の大半の問題はスルー力で解決する -- スルー力研究専門家
思い出 (スコア:2)
NT3.5から3.51に上げた時、APIの挙動が変化してアプリが動かなくなった思い出が。
# OSのAPIの復帰値って、滅多な事では変更されないと思っていた若い頃……
notice : I ignore an anonymous contribution.
WinAPIの戻り値 (スコア:2)
Windowsだと、INVALID_HANDLE_VALUEが-1なんだよね。
で、0が、「成功」と「その他」の二種類に分かれてる。
更に、0は、デフォルトハンドルの意味まであって、戻り値がエラー以外の3種類ってケースがかなり多い。
Win16で無理やりサイズを縮小する必要性と、286のセグメントでFFFFはハードでエラーを弾けるってのが大きかったのかなぁと。
ま、そもそも、Unix系で「エラー」と「それ以外」の二種類しかなかったのが、現代的観点だとお粗末なんで、寧ろ罪はUnixにあると、個人的には思う。
-- Buy It When You Found It --
Re: (スコア:0)
ところがだな、Windowsの場合大抵が"GetLastErrorでエラー原因を取得してください"なくせに
APIのとりうるエラーコードがほぼわからない(UNIXならこれこれのときはEほげほげ、ってmanに書いてある)ので
てんで役に立たない。
# CreateMutexで "パスが見つかりません" が返されたことすらあるのだが、
# そんなもの予測してコード書くなんて私にはできないし、だいたい何が原因なのかもさっぱりわからない。
Re:WinAPIの戻り値 (スコア:1)
Windozeのエラーが使えないって点は同意。
ってか、M$のエラーメッセージは全般的に的外れが多い。
尤も、NT系は、マイクロカーネル化で、サブシステム由来のエラーが予測不能ってのと、セキュリティ関係でエラー詳細が返せないって理由もある。
本筋だと、クライアント-サーバモデルを形成して、両方で全エラーケースをチェックするべき。
だが、これを真面目にやると、人間が管理できる量を超えてしまうのが実情なんで、ままならないねぇ。
-- Buy It When You Found It --