Mr.Tの場所

特攻野郎Aチームじゃないよー

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  253  : 記事  0  : コメント  12282  : トラックバック  52

ニュース

  • 性別:男
  • 猫1:まる
  • 猫2:もろ
  • 猫3:にゃん左部郎
  • タバコ:男は黙ってJPS
[わんくま同盟] C#, VB.NET 掲示板

書庫

日記カテゴリ

Mr.Tです、こんにちは。

ちょっと調べ物していたんですが...

変換ということで、TryParse、TryCastという形で、例外ださない方法がありますね。

今、調べたら、すでにひろえむさんが、こんなエントリを...
それは、おいといて。

で、気になったのが、directcastとTryCastの使い分け。
と、そっちも調べたら、じゃんぬさんが、こんなエントリを...
ま、使うならCtypeじゃなくてDirectCastの方が、パフォーマンスもよく、暗黙の型変換しない、ということでお得ってことです。
それは、おいといて。

 

で、自分の場合、変換できなかった場合ってのはフェッチしたいので、TryCastを使うほうが多いです。


こんなところで例外だしたくねー、ってのもあるんですが、わざわざDirectCastを使うって場合は、「絶対にここじゃ
例外がおきねーよ」という認識があるからこそ、だと思います。

 

でも、それを保障するのは、ナニをもって例外おきねーと判断すればいいのかとなると、これってテストとかで
こういう値は決して入ってこない、っていう判断からでOKなんでしょうかね?

 

それとも、もっと別な見方があるんでしょうか?

投稿日時 : 2007年10月11日 7:06

コメント

# re: Cast 2007/10/11 9:03 渋木宏明(ひどり)
>これってテストとかでこういう値は決して入ってこない、っていう判断からでOKなんでしょうかね?

は、ちょっと違うと思います。

テストの「結果」「入ってこないから」ではなく、設計段階で「入ってくるはずがない=入ってきてはならない」と「想定」される時に、単純なキャスト/パースを行います。(「入ってきた」ら呼び出し側のエラー)

ユーザ入力など、どんな入力が行われるか想定が難しい場合に TryXXX を使う、という使い分けが妥当と思います。

# re: Cast 2007/10/11 9:37 シャノン
> 設計段階で「入ってくるはずがない=入ってきてはならない」と「想定」される時

補足すると、そういうときに、もし入ってきたら、例外を出したい(出すのが正しい)からですね。

# re: Cast 2007/10/11 9:41 じゃんぬねっと
TryCast はしても結局例外にせざるをえない続行不可能な場合って多いですよね。

# re: Cast 2007/10/11 9:52 Mr.T
Mr.Tです、こんにちは。

「設計段階」で、入ってこないという場合とするのがミソなんですね。

これは入力ミスや入力不整合じゃなく、例外・内部エラーなんだよ、ということを明示的に示せ=テストでわざとそういうもんをいれたら、例外だせよ、と。
#例外をどう扱うかは、また別の話ですが

逆に言えば、TryXXXのときは、例外ではなく他に制御を移したり、再入力を求めたり、戻り値をFalseにしたりということになる。
#TryXXXでわざわざ例外あげるのは、確かになんかヘンですね。


# re: Cast 2007/10/11 9:54 Mr.T
コメント書いてるうちに、コメントが...

>補足すると、そういうときに、もし入ってきたら、例外を出したい(出すのが正しい)からですね。

あー、やっぱりそうなんですね。

>TryCast はしても結局例外にせざるをえない続行不可能な場合って多いですよね。

これって、Webアプリとかなら、その他のデータとの整合性やらなんやらでそこだけTryCastしても意味なくて、結局最初のページにもどってもらわんといけない、ってことでしょうか?


# re: Cast 2007/10/11 9:56 かるあ
1.1 を使っているせいでそもそも TryCast がなかったり orz

Post Feedback

タイトル
名前
Url:
コメント