DOBON.NET DOBON.NETプログラミング掲示板過去ログ

.NET Framework データプロバイダについて

環境/言語:[環境(Windows2000) / 言語(VB.NET, C#, C++) / .NET Frameworkのバージョン(1.1)]
分類:[.NET]

こんにちは。現在、「.NET Framework データプロバイダ」の勉強をしている者です。
「Microsoft Visual Studio .NET 2003」の「C++ クラスライブラリ」でDLLを作成しました。
そのDLLをVB.NETに参照設定追加すると、下記コード箇所でエラーが発生しました。
調査したところ以下のことがわかりました。

・「System.Exception」と記述すると、エラーは発生しない。
・「Microsoft Visual Studio .NET 2002」でDLLを作成すると、エラーは発生しない。
・VB.NETで発生し、C#では発生しない。

2002、2003共に同じソースなので、2003のコンパイルオプションに原因があると思われます。
2003でDLLを作成していきたいので、このエラーを解消したいのですが、
お分かりになる方がいましたら、ご教授願います。

【エラー】
「型 'exception' は、'System.Exception' 、または 'System.Exception' から継承する
クラスではないため、'Catch' でキャッチできません。」

【ソース抜粋】
Imports System
Module Module1

Sub Main()
Try
Catch ex As Exception '※エラー発生
Catch ex As System.Exception
End Try
End Sub

End Module
おそらくそのC++で作成されたそのライブラリにexceptionという独自のクラスが定義されているためではないかと思います。

C#は大文字と小文字を区別するためexceptionとExceptionは別の識別子とみなしますが、VB.NETは大文字と小文字を識別しないため、

>Catch ex As Exception

この部分をexceptionとして処理しようとしてエラーを起こしているのではないかと思います。

DOBON.NET | プログラミング道 | プログラミング掲示板