2016-04-08 17 views
-1

Ich habe eine Frage über Try Catch-Anweisungen in C#.C# Try Catch-Anweisung Abfrage

Zum Beispiel, wenn ich hatte eine Aussage als solche

try 
{ 
    string text = sometext; 
    var Auto_IMPORT = new AutoImport(); 
    Auto_IMPORT.StartProcessing(); 
    Console.WriteLine(sometext); 
} 
catch(Exception Ex) 
{ 
    //Would this catch AutoImport.StartProcessing() exceptions? 
    Console.WriteLine(ex.Message); 
} 

Autoimport ist eine Klassenbibliothek und Ich rufe einige Logikverarbeitung zu starten. Wenn innerhalb der Logik in AutoImport.StartProcessing() eine Ausnahme aufgetreten wäre, würde diese try-Anweisung diese Ausnahme abfangen oder wäre sie dann nicht mehr im Gültigkeitsbereich?

Dank im Voraus

+0

Ich denke, es wäre. Es fängt alle im try-Block auftretenden Ausnahmen ab. – Shanid

+2

Wenn in demselben Thread eine Ausnahme auftritt, dann yes. –

+1

Diese Frage liegt außerhalb des Geltungsbereichs, da wir nicht wissen, wie Ihre 3rd-Party-Bibliothek aufgebaut ist. Sie müssten das Unternehmen kontaktieren, das eine solche DLL bereitstellt. Davon abgesehen neigen Frameworks dazu, ihre eigenen benutzerdefinierten Ausnahmen auszugeben, sollte etwas kaputt gehen, aber dies ist kein Standard. – npinti

Antwort

-1

Es auf das Verhalten von Auto_IMPORT.StartProcessing() abhängt. Wenn keine Ausnahme darin gefangen ist, dann erhalten Sie eine Ausnahme. Wenn der interne Code aus Auto_IMPORT dagegen die Ausnahme abfängt und keine neue Ausnahme auslöst, erhalten Sie keine Ausnahmen.

-1

Ja.
Es fängt alle Fehler, die im try Block sind. Es spielt keine Rolle, ob sie in irgendeiner Methode einer Klasse sind.

mit Geprüft:

class _Class 
    { 
     public string name; 
     public void myMethod() 
     { 
      int i; 
      string s = "asda"; 
      i = int.Parse(s); 
     } 
    } 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
       _Class blah = new _Class(); 
       blah.name = "Steve"; 
       blah.myMethod(); 
      } 
      catch(Exception e) 
      { 
       Console.WriteLine(e.ToString()); 
      } 
      Console.ReadLine(); 
     } 

Gefangen Ausnahme bei int.Parse