- - PR -
例外スタックトレース
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-15 09:15
お世話になっております。
ASP.NET(VB/WIN2003server)で下記エラーが発生し 原因がわからずに困っています。 Btn_Update_Clickイベントで文字列が数値に変換できずにエラーになっているまでは わかるのですが、数値変換はConvert.ToInt16をつかっており 仮にConvert.ToInt16で変換できない場合は 「System.Convert.ToInt16(String value)」 がトレースに表示されるはずですが、表示されていません。 Parseも直接使っていません。 ちなみにスタックトレースの 「+0」や「+37」はどういう意味があるのでしょうか? ご教授よろしくお願いします。 -------------------------------------------------------------------------------- 入力文字列の形式が正しくありません。 説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.FormatException: 入力文字列の形式が正しくありません。 ソース エラー: 現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。 スタック トレース: [FormatException: 入力文字列の形式が正しくありません。] System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0 System.Int16.Parse(String s, NumberStyles style, IFormatProvider provider) +37 XXX.XXX_main.Btn_Update_Click(Object sender, EventArgs e) +9681 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33 System.Web.UI.Page.ProcessRequestMain() +1258 -------------------------------------------------------------------------------- バージョン情報 : Microsoft .NET Framework バージョン :1.1.4322.573; ASP.NET Version:1.1.4322.573 | ||||||||
|
投稿日時: 2005-09-15 10:23
こんにちわ。
Debug モードでやってないからじゃないでしょうか? Release モードでやると、最適化してるのか、正確に出てないですね。 +37 ・・・。何でしょうね。ソースが見えるところは行番号のようですが。 | ||||||||
|
投稿日時: 2005-09-15 14:11
ご回答ありがとうございます。
Release モードで当メッセージがでています。 画面から同じ値を入力して正常終了する場合と 当エラーが発生する場合があり 余計に分からなくなっています。 | ||||||||
|
投稿日時: 2005-09-15 14:30
こんにちは、じゃんぬ です。
原因を絞りこむためにも、どの値を Parse しようとしたかを調べていませんか? 怪しいところで、値を確認するために何かを出力したりとかしていませんか? デバッグを始めるのに 1 番最初にやる作業だと思います。
直接使ってなくても内部的に使ってるメソッドはありますからね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-09-15 15:10
Release でデバッグしているのですか?
問題のコード周辺を出して頂くと分かる「かも」しれません。 | ||||||||
|
投稿日時: 2005-09-15 20:01
実は他の人からの指摘で発覚したエラーで
自分では当エラーが再現できていない状況です (どのような条件でエラーが発生するか謎) Parseを内部的に使っているConvert.ToInt16は全て調べました。 プログラムをいじってConvert.ToInt16に変換できない値を渡したりして みましたが、その場合はトレースに 「System.Convert.ToInt16(String value)」が表示されることを確認しました。 Convert.ToInt16以外にParseを内部的に使っているメソッドは 使ってないと思うのですが・・・。 一応、convertを使っている3箇所を下記させて頂きます。 ------------------------------------------------------------------ Dim W_Date As DateTime Dim W_Keizyobi As DateTime W_Date = Convert.ToDateTime(Txt_Keizyou_Tuki.Text & "/01") W_Keizyobi = DC.Getmatu(Convert.ToInt16(Year(W_Date)), Convert.ToInt16(Month(W_Date))) ------------------------------------------------------------------ ------------------------------------------------------------------ cmd.Parameters.Add("@更新回数", SqlDbType.Int) cmd.Parameters("@更新回数").Value = Convert.ToInt16(Hdn_Upd_Cnt.Value) + 1 ------------------------------------------------------------------ ------------------------------------------------------------------ If Convert.ToInt16(cmd.Parameters("@Results").Value) = 999 Then txtMessage.Value = "XXX" Exit Sub End If ------------------------------------------------------------------ | ||||||||
|
投稿日時: 2005-09-15 20:15
こんにちは、じゃんぬ です。
と、とりあえず、聞かなきゃダメですよね? 再現するまで、粘らないと何とも進みませんよね? 絞り込める情報がこれ以上ないのであれば、 ちょっと回答しかねますね。> とりあえず私は。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1