質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.76%

  • Oracle

    572questions

    Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

ODP.netのCloseメソッドに対して、処理失敗のエラーは存在しないのでしょうか?

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 446

ogura87

score 96

ODP.net(Oracle.DataAccess.dll)の「OracleConnection」を使って、VB.netからORACLEにアクセスするシステムを作成しています。

.Closeメソッド失敗時のエラー処理についてですが、正常にOpenした後、LANを抜いて完全にORACLEデータベースにアクセス出来ない状態で.Closeメソッドを実行してもエラーになりません。

.Closeメソッドにはエラーは無いのでしょうか?
そもそも、Oracleにアクセスできない時点でCloseされたという事なのでしょうか?

Private oraConn As OracleConnection = New OracleConnection

Try
    oraConn.Close()

Catch ex As Exception
    MsgBox(ex.Message.ToString)
End Try

このような感じでエラーをキャプチャしようとしていますが、LANを抜いた状態でも、Exceptionに入りません。

逆に、OracleConnectionのCloseメソッドでエラーを起こす方法はあるのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • SurferOnWww

    2017/10/13 01:47

    ODP.NET では?

    キャンセル

  • ogura87

    2017/10/14 09:17

    ご指摘ありがとうございます。修正致しました。

    キャンセル

回答 1

checkベストアンサー

+2

ODP.NET の OracleConnection.Close メソッドに関して Oracle の公式文書での十分な説明が見つけられれないので、想像が入ってますが・・・

Microsoft の System.Data.OracleClient.dll 内の OracleConnection と同じ仕様で作ってあれば、以下の MSDN ライブラリの説明によると、デフォルトでは connection pool に connection を返すだけで、しかも何度 Close しても例外はスローされません。(SqlClient と同様)

OracleConnection.Close メソッド ()
https://msdn.microsoft.com/ja-jp/library/system.data.oracleclient.oracleconnection.close(v=vs.110).aspx

上記のことを言っている部分を抜粋しておきます。(日本語は機械翻訳で意味不明なので英文)

"The Close method rolls back any pending transactions. It then releases the connection to the connection pool, or closes the connection if connection pooling is disabled."

"An application can call Close more than once without generating an exception."

"When you use the .NET Framework Data Provider for Oracle, you do not need to enable connection pooling because the provider manages this automatically."

なので、

正常にOpenした後、LANを抜いて完全にORACLEデータベースにアクセス出来ない状態で.Closeメソッドを実行してもエラーになりません。 

というのは理解できる結果だと思いますが・・・

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/14 10:30

    SurfeOnWww様

    なるほど。そういう事なんですね。。。
    では、例外処理は必要ないという事ですね。。。

    キャンセル

  • 2017/10/14 11:12 編集

    lanケーブルを抜く=通信路の障害に対する処理を考えてのことと想像していますが、それはユーザーではなんとも対応できないことですので、それによって発生する例外は捕捉すべきではないです。(.netの例外処置について詳しい話をご希望であれば、新たに別のスレッドを立てて質問していただければ、可能な限り回答します)

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Servlet でのログイン処理について

    Servletにて、ログイン画面を作成しておりますが、 うまくできません。 どこを修正するべきか、教えていただけないでしょうか? ORACLEのデータベースの表一覧に一致

  • 受付中

    ファイルのコピー

    Java開発初心者です。 ファイルのコピーを行うコードを書いています。 FileInputStreamとFileOutputStreamを使って、 コピーしたいファイ

  • 解決済

    例外処理(Tryの内容)

    前提・実現したいこと SQL更新実行の処理を行う際にエラーが発生した場合(SQLが成立しない場合?)に例外処理が行われるようにコードを書きたい。 しかし、Tryブロックに何を書

  • 解決済

    Webアプリケーションにfunctionの結果表示をするC#の書き方(Asp.net, Oracle...

    前提・実現したいこと Asp.net(c#)でOracle databaseをコネクトしてWeb applicationを作っています。(プラットフォームはVisual Stud

  • 解決済

    (Java)throwとthrowsの違いについて

    Javaを勉強している者です。 タイトルの通り、Java言語の例外処理で使われるthrowとthrowsの違いが よく分かりません。 どのような場合にthrowを使い、どのよ

  • 受付中

    C# コンボボックスにホスト名を入力し接続する方法

    C#を使用してWindowsフォームのアプリケーションを作成しています。 コンボボックスにホストを入力し、ボタンを押すことでリストボックスに指定したホストのMySQLに接続するとい

  • 解決済

    PHPの例外処理について

    例外処理のcatch()の()の部分はどのような意味なのでしょうか? 例えば、 try{ $obj = new SplFileObject($file, "rb");

  • 解決済

    PHP 例外処理任意の例外検知

    例外処理についてです。 データベースなどを扱う際tryでデータベースの部分を囲みエラーを検知するなどの使い方があると思いますが、catchの部分で任意のエラーを検知する方法ってあり

同じタグがついた質問を見る

  • Oracle

    572questions

    Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。