0

例外の内部例外をキャッチして、それを SQL データベース テーブルに記録しようとしています。私が持っているコードは問題なく例外をキャッチしてSQLテーブルに記録しますが、例外のメッセージに「詳細については内部例外を参照してください」と表示されていても、内部例外レコードを取得することはありません。内部例外のキャッチに関する限り、誰かがここで正しい方向に私を向けることができますか? これは、例外をキャッチしているが、内部例外に対して機能していないコードです。

                try
                {
                    context.CalculateFreight(xmldoc);
                }
                catch (Exception ex)
                {
                    if (ex.Message.ToString().Length > 2048)
                    {
                        ApplicationError myError = new ApplicationError();
                        myError.ErrorNumber = 1;
                        myError.ErrorSeverity = 1;
                        myError.ErrorState = 1;
                        myError.ErrorLine = 29;
                        myError.ErrorProcedure = "Web Service - ProcessShipping()";
                        myError.ErrorMessage = ex.Message.ToString().Substring(0, 2047);
                        myError.ErrorDateTime = DateTime.Now;

                        context.ApplicationErrors.AddObject(myError);
                        context.SaveChanges();
                    }
                    else
                    {
                        ApplicationError myError = new ApplicationError();
                        myError.ErrorNumber = 1;
                        myError.ErrorSeverity = 1;
                        myError.ErrorState = 1;
                        myError.ErrorLine = 29;
                        myError.ErrorProcedure = "Web Service - ProcessShipping()";
                        myError.ErrorMessage = ex.Message.ToString();
                        myError.ErrorDateTime = DateTime.Now;

                        context.ApplicationErrors.AddObject(myError);
                        context.SaveChanges();
                    }

                    if (ex.InnerException.Message.ToString().Length > 0)
                    {
                        if (ex.InnerException.Message.ToString().Length > 2048)
                        {
                            ApplicationError myInnerException = new ApplicationError();
                            myInnerException.ErrorNumber = 1;
                            myInnerException.ErrorSeverity = 1;
                            myInnerException.ErrorState = 1;
                            myInnerException.ErrorLine = 29;
                            myInnerException.ErrorProcedure = "Web Service - INNER EXCEPTION";
                            myInnerException.ErrorMessage = ex.InnerException.Message.ToString().Substring(0, 2047);
                            myInnerException.ErrorDateTime = DateTime.Now;

                            context.ApplicationErrors.AddObject(myInnerException);
                            context.SaveChanges();
                        }
                        else
                        {
                            ApplicationError myInnerException = new ApplicationError();
                            myInnerException.ErrorNumber = 1;
                            myInnerException.ErrorSeverity = 1;
                            myInnerException.ErrorState = 1;
                            myInnerException.ErrorLine = 29;
                            myInnerException.ErrorProcedure = "Web Service - INNER EXCEPTION";
                            myInnerException.ErrorMessage = ex.InnerException.Message.ToString();
                            myInnerException.ErrorDateTime = DateTime.Now;

                            context.ApplicationErrors.AddObject(myInnerException);
                            context.SaveChanges();
                        }
                    }
                }
4

1 に答える 1

1

内部例外がない場合、内部例外はありません。

ここから:方法: 例外の内部例外を確認する

元のエラーがない場合、InnerException の値は null 参照または Visual Basic の Nothing になります。

「詳細は内部例外を参照してください」というメッセージ。おそらく誰かの定型文であり、常に当てはまるとは限りません。

于 2012-12-19T19:03:09.377 に答える