- - PR -
別クラスからのException catchについて
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-07-17 12:31
こんにちわ。
えっと。。。 catch (Exception ex) は例外情報を編集したい場合かと。 throw ex; は再throwしたい場合、そこで発生した例外情報を投げる為、 throw; は何もせずそのまま発生した例外情報を投げる。。。 でしょうか。 うぅ・・・正直よく理解できないです。 | ||||||||||||||||||||||||||||
|
投稿日時: 2008-07-17 21:54
ではまず、例外を、なんのために使用しているのでしょう?
ここで、"EPSON Printer" という名前を付けられたプリンタを探していますが、この名称のプリンタは、恒久的に存在しているものなのでしょうか。 .NET Framework の例外を、何らかの検査のために使用するのは避けるべきです。 「何らかの検査」とは、入力された文字列が規定のフォーマットに従っているかなど、何らかの都合によってエラーとなる状態であることが頻繁に起こりえる事の検査を指します。 今回のケースで、「必ず EPSON Printer という名前のプリンタでなければならない」のであるなら、例外を使用するのもまたよしでしょう。 私は、「FAX や Document Writer のようなファイルに出力するものじゃなくて、印字してくれるプリンタだったらなんでもええんじゃね?」と思ったのですけど。 さて、catch と catch (Exception ex) の違いですが、catch だけだと、すべての例外を捕捉します。しかし、例外情報にはタッチできません。 catch (Exception ex) だと、Exception クラスから導出された例外について捕捉し、ex 変数によって情報にアクセスすることが可能です。 次に throw ex; と throw; の違いについてですが、catch ブロックにおいて、捕捉した例外をそのまま再送出したいのであれば、throw; でなければなりません。 throw ex; とすると、上位で捕捉したときに、例外の発生場所が変わってしまいます。 throw の直後に new Exception(); と書くのと、いったん ex という変数に受けた後、throw ex; と書くのでは、行数が違うとか途中で例外情報を操作できるといった違いしかありません。 気をつけなければならないのは、「throw は関数ではない」ということです。 オンラインの MSDN には、注釈を入れていますから、ご覧ください→try-catch (C# リファレンス)<microsoft.com> で、本題。2008-07-15 21:25 の投稿文をもう一度見てみると、
となっています。注目は、2、catch 句の方です。 これらの投稿を、無視されましたよね?
送出や再送出は関係なく、2の方が、catch のみのため、どうやってメッセージを参照しようとしているのか。それがとても疑問です。 1の方は元のコードのまま、2の方を
とすれば、メッセージが参照できるでしょう? ついでに、 catch 句は必ず必要というわけではありません。 |
«前のページへ
1|2|3