2005年05月18日(水)
.NETにThrowsは必要ないのか?
テーマ:.NET
ここ最近.NET(C#)を触っています。
Javaにそっくりなので、とっつきやすかったのですが、似ているとはいっても所々違う部分もありますので、よく記述を間違えます。
Javaにはあって、C#にはないものの中で一番気になるのが、Throws句です。
メソッド定義に「Throws 例外」を付加する事で、呼び出す側で例外処理を強制させる機能です。
これがあることによって、コンパイル時に必要な例外が漏れなく実装できるため、実行してみた時に想定外の問題が起こりにくくなります。
この機能、最初に「例外処理」を理解できた時に便利だなぁと感心したものです。
ところがC#には、この機能がありませんので、実行してみた時に思わぬ例外が発生したりして戸惑います。
何でないんでしょうか。
確かにThrowsがあると、面倒くさいです。
最初は便利と思うものの、慣れてくるといちいち強制されるのがうっとおしかったりします。
でも、Throwsは実装を助けるためにとても重要な機能だと思っています。
C#の言語仕様設計者は、実行速度を重視したんでしょうか。
それともコーディング量が減るように意識したんでしょうか。
もしくはプログラマにお任せしたかったんでしょうか。
本当のところは分かりませんが、個人的にはThrows句を実装してほしいところです。
Javaにそっくりなので、とっつきやすかったのですが、似ているとはいっても所々違う部分もありますので、よく記述を間違えます。
Javaにはあって、C#にはないものの中で一番気になるのが、Throws句です。
メソッド定義に「Throws 例外」を付加する事で、呼び出す側で例外処理を強制させる機能です。
これがあることによって、コンパイル時に必要な例外が漏れなく実装できるため、実行してみた時に想定外の問題が起こりにくくなります。
この機能、最初に「例外処理」を理解できた時に便利だなぁと感心したものです。
ところがC#には、この機能がありませんので、実行してみた時に思わぬ例外が発生したりして戸惑います。
何でないんでしょうか。
確かにThrowsがあると、面倒くさいです。
最初は便利と思うものの、慣れてくるといちいち強制されるのがうっとおしかったりします。
でも、Throwsは実装を助けるためにとても重要な機能だと思っています。
C#の言語仕様設計者は、実行速度を重視したんでしょうか。
それともコーディング量が減るように意識したんでしょうか。
もしくはプログラマにお任せしたかったんでしょうか。
本当のところは分かりませんが、個人的にはThrows句を実装してほしいところです。








