C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: エラーがキャッチできないのですが・・・


(過去ログ 85 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■50931 / inTopicNo.1)  エラーがキャッチできないのですが・・・
  
□投稿者/ たか (73回)-(2010/06/22(Tue) 14:35:05)

分類:[.NET 全般] 

C#でWinアプリ作ってます。

OfficeについてるMicrosoft Office Document Imaging Writer をCOM経由で使って PC画面の表示内容をキャプチャ→OCRで文字認識という処理をしているのですが 数千回に一回 アプリごと落ちます。

認識できないこと自体は別にかまわないし エラー処理ができるのであれば無料のOCRだし文句はないのですが
アプリケーション自体が強制終了されてしまうので困ってます。
該当部分にtry,catchでくくっても キャッチできずに APP CRASHとかヒープエラー?といった単語が見られます。
メモリ関連で何か問題が起きてる?
(エラーが出たら貼り付けたいところなのですが数千回に1回なのでなかなか出ずとりあえずこの質問書いてます)

念のため大元のApplication.Runをtry,catchでくくってもキャッチできませんでした。


DLL内での問題なので根本的な解決はMicrosoftにゆだねるしかないのですが こういうケースってエラーをキャッチしてエラー処理を流すことってできないのでしょうか?
何か方法があれば教えてください。

引用返信 編集キー/
■50932 / inTopicNo.2)  Re[1]: エラーがキャッチできないのですが・・・
□投稿者/ マサヤ (37回)-(2010/06/22(Tue) 14:39:32)
そのパターンでよくあるのがメモリの問題です。
try catch finally でメモリを開放するか、usingアセンブリを使用していると問題がなかったりします。
ガベージコレクションで処理をしてくれない処理を行っていないでしょうか?
引用返信 編集キー/
■50937 / inTopicNo.3)  Re[2]: エラーがキャッチできないのですが・・・
□投稿者/ 渋木宏明(ひどり) (1368回)-(2010/06/22(Tue) 15:11:24)
渋木宏明(ひどり) さんの Web サイト
Application.ThreadException や AppDomain.UnhandledException でも補足出来ませんか?


引用返信 編集キー/
■50941 / inTopicNo.4)  Re[2]: エラーがキャッチできないのですが・・・
□投稿者/ たか (74回)-(2010/06/22(Tue) 15:42:37)
>マサヤ さん
ありがとうございます。

やはりメモリ関連ですか。。。
メモリの解放はきちんとしているつもりですが もう一度ソースチェックしてみます。


>渋木宏明(ひどり)さん
ありがとうございます。

面倒なのでここでは catch(Exception ex)とやっています。

全てのエラークラスは Exceptionを継承しているはずなのでこれで全てのエラーをキャッチできる、、、と思っていたのですが
Application.ThreadException や AppDomain.UnhandledExceptionの説明読むと違うのかな?
try,catchを仕込み忘れた場合にキャッチする用のようなニュアンスにもとれますが
とりあえずソースに仕込んでみたので これでキャッチできるか試してみたいと思います。

引用返信 編集キー/
■50966 / inTopicNo.5)  Re[3]: エラーがキャッチできないのですが・・・
□投稿者/ chobi (10回)-(2010/06/22(Tue) 17:18:08)
No50941 (たか さん) に返信

> 全てのエラークラスは Exceptionを継承しているはずなのでこれで全てのエラーをキャッチできる、、、と思っていたのですが
> Application.ThreadException や AppDomain.UnhandledExceptionの説明読むと違うのかな?

WindowsフォームはCLS準拠の例外にしか対処していません。
このため上記2点についてはイベント登録と
コールバックメソッドを準備する必要があります。
書き方は下記を参考にすると良いかもしれません。

http://www.atmarkit.co.jp/fdotnet/dotnettips/320appexception/appexception.html


解決済み
引用返信 編集キー/
■50975 / inTopicNo.6)  Re[4]: エラーがキャッチできないのですが・・・
□投稿者/ 渋木宏明(ひどり) (1370回)-(2010/06/22(Tue) 21:17:33)
渋木宏明(ひどり) さんの Web サイト
2010/06/22(Tue) 22:57:17 編集(投稿者)

>全てのエラークラスは Exceptionを継承しているはずなのでこれで全てのエラーをキャッチできる、、、と思っていたのですが
>Application.ThreadException や AppDomain.UnhandledExceptionの説明読むと違うのかな?

try ~ catch 構文で補足出来るのは、そのスレッドの try ~ cath で括られた文脈内で発生した例外だけです。

同一スレッドであってもメッセージポンプが回った後に実行されたコンテキストや、明示的・暗黙的に起動されたワーカースレッド内での例外とかは補足出来ません。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -