- PR -

ObjectDataSourceコントロールでの例外処理について

1
投稿者投稿内容
みき
会議室デビュー日: 2006/09/27
投稿数: 1
投稿日時: 2006-09-27 00:38
こんばんは。みきです。よろしくお願いします。

わたしは、asp.net(言語VB)で
ObjectDataSourceコントロールを使用しGridViewでデータを表示させています。

ObjectDataSourceコントロールの中に例外処理としてCatch SQLExp As SqlException
を記載しているのですが、例外が発生した際に参照元のラベルコントロール等に
文字を出力したいと思うのですが、参照元に文字を返せずに困っております。


実際にこの用な事は可能でしょうか?
下にコードを記載させて頂きますのでどうかアドバイスの程をよろしくお願い致します。


ObjectDataSourceコントロール(抜粋)
/////////////////////////////////////////////////////////
<DataObjectMethod(DataObjectMethodType.Select, True)> _
Public Shared Function DataSelect(ByVal Display() As DataSet) as DataSet
qqq = ConfigurationManager.ConnectionStrings("qqq").ToString
qqqDb = New SqlConnection(qqqStr)
'///SQL文発行///
qqqCom = New SqlDataAdapter(countsql, qqqDb)
data = New DataSet
qqqCom.Fill(data, "Display")
'///結果をGridViewに返す///
Return data

Catch SQLExp As SqlException  ←これが発生した場合、参照元に文字を返したい

  
      End Try

'sqlExceptionが発生した時の終了処理
If qqqDb.State <> ConnectionState.Open Then
qqqDb.Close()
Else
'sqlExceptionが発生していない場合のDB切断処理
qqqDb.Close()
End If
/////////////////////////////////////////////////////////
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2006-09-27 04:13
例外エラーの基本的な考えた

例外エラーが発生したらエラー情報をラベルに表示するのでなく(※)ログファイルに登録したり、メールにて管理者に送信します。

エンドユーザーには、「エンドユーザー向け」の専用ページを用意してエラーメッセージを表示します。

これらの処理をまとめて行うには、

Global.asaxの「Application_Error」イベントハンドラ

で行うのが便利です。

※例外エラーのメッセージを直接エンドユーザーに表示するとセキュリティ上問題があります。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
mitchin
会議室デビュー日: 2003/05/28
投稿数: 16
投稿日時: 2006-09-27 14:27
呼び出し元に返したいのであれば、例えば ByRef Message As String をパラメータに追加してこれにエラーメッセージを入れるという手もあります。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-09-27 15:20
まぁ、例外が発生してもメッセージを表示させるだけでアプリケーションは終了
させたくないときはありますよね。

で、まず、終了処理はFinallyブロックに書きましょう。
そうしておくと、例外が起きたときでもそのFinallyの中に書いた処理は必ず
実行されます。
で、例外が発生したときはそのとき表示させたい文字列を含めた例外を自分で
つくってThrowしましょう。
参照側はやはりTry〜Catchで例外を処理するようにして、例外がかえってきたときは
そこに含まれるメッセージをラベルに書き出すようにすればよいでしょう。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-27 21:56
その前に、構文の勉強が必要。。。抜粋とはいえ、ちょっと酷い。
コード:
<DataObjectMethod(DataObjectMethodType.Select, True)> _ 
Public Shared Function DataSelect(ByVal Display() As DataSet) as DataSet
    qqq = ConfigurationManager.ConnectionStrings("qqq").ToString
    Try
        qqqDb = New SqlConnection(qqqStr)
        '///SQL文発行///
        qqqCom = New SqlDataAdapter(countsql, qqqDb)
        data = New DataSet
        qqqCom.Fill(data, "Display")
        '///結果をGridViewに返す///
        Return data

    ' Catch SQLExp As SqlException  ←これが発生した場合、参照元に文字を返したい
    ' ↑参照元に返す必要はない

    Finally
        ' 2回 Close しても問題はない
        qqqDb.Close()
        qqqCom.Dispose()
    End Try
End Function



_________________
1

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