私はC#でウェブカメラを利用するためにインターネットから入手したDLLを使用しています。ウェブカメラが見つからない場合は、「使用するカメラを見つけることができません。この時点で他のアプリケーションがあなたのカメラを使用していないことを確認してからもう一度やり直してください。私が抱えている問題は、DLLの作成者がDLLのプログラミングでtry-catchを含んでいたことです... "オブジェクトのインスタンスに設定されていない参照されたオブジェクト"というエラーが代わりに発生するため、try-catchは例外を表示しません(try/catchによってMessageBoxにフォーマットされます)。メッセージを表示して自分自身を表示する前に、組み込みのエラー処理を無効にする方法はありますか?C#別の関数でtry-catchをオーバーライドする
答えて
「オブジェクトのインスタンスに設定されていないオブジェクト参照」(NullReferenceException
)が表示されている場合、実際に例外をキャッチしなかった可能性があります。
あなたがその正確なケースをキャッチしたいと思うなら(あなたが知らないエラーや、例外処理を行うための適切な方法では処理できないエラーを他の人に伝えさせたい場合)、スタックを使って、例外に含まれる情報:
class Program
{
public static void DoSomething()
{
string blah = null;
Console.WriteLine(blah.Length);
}
static void Main(string[] args)
{
try
{
DoSomething();
}
catch (NullReferenceException e)
{
string methodName = e.TargetSite.Name;
Console.WriteLine(methodName);
System.Diagnostics.StackTrace trace =
new System.Diagnostics.StackTrace(e, true);
int lineNumber = trace.GetFrame(0).GetFileLineNumber();
Console.WriteLine(lineNumber);
if(methodName == "DoSomething" && lineNumber == 13)
{
ShowErrorToUser(); // Todo: Implement this
}
else
{
throw; // Just re-throw the error if you don't know where it came from
}
}
}
}
編集それは本当にキャッチし、メッセージボックスに表示されていることをコメントで判明
。
同様の状況に適用されるためこの回答を残しますが、この状況には適用されません。 OscarMKの答えを参照してください。
私は特にNullReferenceExceptionをキャッチしようとしましたが、私はまだ同じことを取得します。私は私が前にそれについて明確かどうか分からないが、それはメッセージボックスに出てくるので、彼は自分のコードで発生するエラーを表示するためにキャッチを使用していることを知っている。私は何とかそれをオーバーライドする必要があり、私のtry/catchがそれを処理できるので、彼はすでに持っているので、どのように考えていない。人生と死ではありませんが、実際に理解できるかもしれないエラーメッセージがほしいと思います。 – Brandon
@Brandon:いいえ、それは明らかではありませんでした:) "オブジェクト参照...代わりに来る"あなたの質問を編集することができますメッセージボックスに表示されているエラーについて何かを言う?また、コードライセンスの問題がない場合は、ILSpyのようなものを使用してDLLからコードをリッピングすることもできます。 –
私はそのプログラムについて知りませんでした。私はそれをチェックアウトする必要があります。彼はコードを公開していないことを除いて、オープンソースのさまざまなサイトにそのように投稿されているので、 "オープンソース"プロジェクトです。彼はちょうど彼のC#プロジェクトファイルのソースコードを投稿しました。 – Brandon
try-catchブロックのみをオーバーライドすることはできませんが、メソッドをオーバーライドして、基本的には以前のメソッドが行っていることをすべて実行してtry-catchブロックを削除できます。
- 1. trycatch関数の問題
- 2. cライブラリファイル関数をオーバーライドしますか?
- 3. 別のjavascriptファイルの関数をオーバーライドする方法は?
- 4. 'javascript関数をオーバーライドする
- 5. モジュールレベルの関数をオーバーライドするPythonユニットテスト
- 6. 関数内の関数をオーバーライド/上書きする
- 7. jQueryプラグインの関数のオーバーライド
- 8. C++では、仮想関数をオーバーライドすると自動的に仮想関数ですか?
- 9. ネイティブJavaScript関数をオーバーライド
- 10. tryCatchとggplot
- 11. [[noreturn]]仮想関数のオーバーライド
- 12. 関数のオーバーライドshouldInterceptRequest on Android
- 13. 仮想関数オーバーライド仮想関数
- 14. Cには関数のオーバーライドがありますか?
- 15. 関数のオーバーライドはJavaScript/JQueryで
- 16. 、私は、関数の外で別の変数を使用する変数を作成したい関数C#
- 17. C++:正しくテンプレートクラスに仮想関数をオーバーライド
- 18. オーバーライドjavascript関数のローカル変数
- 19. メソッドをラムダ関数でオーバーライドすることができます
- 20. 関数がプロトタイプをオーバーライドします
- 21. C++プライベートメンバーの変数が別の関数で不明
- 22. javascript - getJSONのjQueryコア関数をオーバーライド
- 23. チェリーフレームワーク - テンプレートgeneral.phpの関数をオーバーライド
- 24. tryCatchを使ってRでデータファイルをロード
- 25. すべてのモデルでDjangoのadmin.ModelAdmin関数をオーバーライドします
- 26. C++関数呼び出し識別子
- 27. Help C#でC関数をマーシャリングする
- 28. 他のモジュールに存在する関数をオーバーライドする方法
- 29. 変数宣言をCの別の関数に置く
- 30. QFileSystemModelでメンバ関数をオーバーライド(再実装)する方法
最初にWebCamのテストを行い、そのメソッドを呼び出します。デバッガを自動化する方法を理解したい場合を除きます。 ;-) –
ビリー、どこでDLLを手に入れましたか?ママ、私はインターネットからそれを手に入れました! –