何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 36872
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

throw e;(へぼろっぱぁ)より:

定期的に各所ででてくるお話ですが throw e; はやめましょうね、ホントに。

まぁ、あれですよ。Try と入力すると、Catch が自動入力されるのが、そもそもの間違いなんです。

あれ?あれれれれ???

むはっ!!!勘弁してください→Visual Basic 言語リファレンス / Throw ステートメント

expression
必ず指定します。スローする例外に関する情報を指定します。

これですよ、これ。マイクロソフトの説明が、そもそも間違っているんですよorz

正しくは、こっち→Throw ステートメント (Visual Basic)

expression
必ず指定します。スローする例外に関する情報を指定します。Catch ステートメント内では省略可能です。

Catch ステートメント内では省略可能です。

Catch ステートメント内では省略可能です。

Catch ステートメント内では省略可能です。

なお、C# の方は、旧 MSDN ライブラリでもcatch 句に現在の例外オブジェクトを再びスローするときは省略されます。と書かれています。…なんか、変な日本語だけど、まぁ、よしとする。

………うわ!だめだぁ~~!!C# は、新 MSDN ライブラリの方がダメダメですよ!!→try-catch (C# リファレンス)

throw ステートメントは、catch ステートメントでキャッチされた例外を再びスローするために catch ブロックで使用できます。次に例を示します。

catch (InvalidCastException e)
{
    throw (e);    // Rethrowing exception e
}

パラメータのない catch 句で処理された例外を再スローする場合、引数のない throw ステートメントを使用します。次に例を示します。

catch
{
    throw;
}

『C# 言語仕様』の方には、ちゃんと書いてありますね。

8.9.5 The throw statement より:

A throw statement with no expression can be used only in a catch block, in which case that statement re-throws the exception that is currently being handled by that catch block.

ちょうどいいや。ここで宣伝。

新しい msdn ライブラリでは、各ページの下の方に「コミュニティ コンテンツ」というところがあります。このコミュニティ コンテンツは、Windows Live ID を持っている方なら誰でも、そのページの内容に関係のある事柄を書き込むことができます。
“関係のある事柄”といっても、「この意味がわからない。」「これって、具体的にどう使うの?」といった質問に関しては、MSDN フォーラム他でお尋ねください。
そういった質問ではなく、「ここ、誤訳でしょ。正しくは、こう!」とか、「ここでされている説明って、間違ってますよね。実際にはこう動きますよね。」とか、「これって、使い道があまりなさそうですが、こんな風に使ってください。」とか、「よく間違って使っている例を見ますが、こんな風に使いましょう。」など、他の人への提案を書き込んでください。

とはいえ、MVP を中心としたモデレータが、24時間態勢で(<おいっ!!)見回り、適切な誘導をしますので、感覚がつかめるまでは遠慮無く書き込んでください。


閑話休題


まぁ、ね。あれですよ。そもそもの原因は try と入力したら catch ブロックが挿入されることですよ。これが、finally だったら、誰も再スローしようなんて思わないのですから。

かつ、.NET Framework では「検査例外」は無いのですから、ほとんどの場合は try - finally で良いのです。いっそのこと、「try - catch 使うな。try - finally 使え。」ってことで、キャンペーン打ってみてはいかがでしょう?

投稿日時 : 2007年6月8日 22:07
コメント
タイトル
名前
Url
コメント