- PR -

C#のTry〜Catchについて

1
投稿者投稿内容
由加
常連さん
会議室デビュー日: 2008/04/02
投稿数: 34
投稿日時: 2008-04-02 11:56
こんにちは。
ほんとに初歩的なことですみません。
VB.NETからC#に乗り換えたところです。
Try 〜 catchなのですが、

OracleConnection objDb = oradb.getConnection();
OracleTransaction oraTra;

try
{
objDb.Open();
oraTra = objDb.BeginTransaction();
〜〜
}
catch (Exception ex)
{
if (oraTra != null)
{
oraTra.Rollback();
}
}

と書くと、catch句の中で、
「未割り当てのローカル変数」としてビルドエラーになってしまいます。
VB.NETではこのコードで実行できたのですが、
C#の場合、どのようにすればよいのでしょうか。
初歩的すぎる質問ですみません。
よろしくお願いします。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-02 12:08
OracleTransaction oraTra = null;

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
nakaP
大ベテラン
会議室デビュー日: 2005/09/27
投稿数: 138
お住まい・勤務地: 高知
投稿日時: 2008-04-02 12:10
こんにちは。

引用:

由加さんの書き込み (2008-04-02 11:56) より:
OracleConnection objDb = oradb.getConnection();
OracleTransaction oraTra;

try
{
objDb.Open();
oraTra = objDb.BeginTransaction();
〜〜
}
catch (Exception ex)
{
if (oraTra != null)
{
oraTra.Rollback();
}
}


oraTraの変数は用意されていますが値の代入は行われてませんよね?

ところで、
引用:

VB.NETではこのコードで実行できたのですが、


VS2005で確認しましたがVBでも同じエラーが起きます。
以前のバージョンではエラーは発生しないのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-02 12:21
引用:

nakaPさんの書き込み (2008-04-02 12:10) より:

VS2005で確認しましたがVBでも同じエラーが起きます。


デフォルトですと C# ではエラーになりますが、VB は 「警告」 になるのでビルド自体はとおります。

引用:

以前のバージョンではエラーは発生しないのでしょうか?


2003 では VB に 「未割り当て検出機能」 がありませんでした。(C# にはあります)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
nakaP
大ベテラン
会議室デビュー日: 2005/09/27
投稿数: 138
お住まい・勤務地: 高知
投稿日時: 2008-04-02 12:47
引用:

じゃんぬねっとさんの書き込み (2008-04-02 12:21) より:
デフォルトですと C# ではエラーになりますが、VB は 「警告」 になるのでビルド自体はとおります。


おっとそうみたいですね。ビルドせずに、コード内に表示される波線だけで判断してました。
申し訳ないです。

引用:

2003 では VB に 「未割り当て検出機能」 がありませんでした。(C# にはあります)


ありがとうございます。2005以前は触ったことないので勉強になります。
由加
常連さん
会議室デビュー日: 2008/04/02
投稿数: 34
投稿日時: 2008-04-02 12:49
ありがとうございます。
ビルド自体はできてしまいます。
2003の時は何もでなくて、
これでいいものだと、ずっと思ってました。
型変換など、VBだととりあえずはやってくれてしまうので、
今苦労しています。
(本当は厳密な方が良いのだとは思いますが)
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)