Sök  
 
Skribent Inlägget Löst
Google
 
     

  Forum » .NET 3.0 » Unhandled exception  
 
Skriven av: gisjoe | den 26 maj 2010 Kl 20:56
Unhandled exception
Jag har en .NET  applikation som är ett till tillägg till en 3parts produkt.
När formuläret (winform) visas så körs en funktion från en 3parts COM dll.
När jag kallar på denna funktion så har jag den i en try/catch sats ifall något går fel.

Detta funkar utmärkt på de flesta datorer men på en specifik dator så får jag ett .NET Unhandled Exception trots att all kod ligger i en try/catch.

Kollar man i stacken så ser det ut som att det är 3parts applikationen som kallar på funktionen och inte min tilläggs app.

Tips?

Antal svar 16



NAVIGERING: [1] 2
Skriven av: BlackMustard | den 26 maj 2010 Kl 21:05
exakt hur ser koden (runt anropet) i din app ut? vilken typ har det exception som kastas? kan du visa relevanta delar av din stack trace?
Skriven av: gisjoe | den 26 maj 2010 Kl 21:15
Koden är bara en vanlig try/catch:

Kod:

try
{
  3PartyCOMDll.fnGetSomeStuff();
}
catch
{
  //show error
}



Har inte stacken på denna datorn tyvärr. Det är en unhandled exception som kastas.
Skriven av: BlackMustard | den 26 maj 2010 Kl 21:24
unhandled exception är .net:s sätt att visa att den tycker att det inte fångades upp ordentligt. i felmeddelanderutan bör du få veta vilken typ av exception det är (t.ex. System.NullReferenceException). när du vet det, testa att köra

Kod:
try
{
  3rdPartyCOMDll.fnGetSomeStuff();
}
catch (NullReferenceException ex)
{
  // här kan du ta reda på mer
}
catch
{
  // här kanske du får lite info iaf
}

och se om du lyckas fånga felet.
Skriven av: gisjoe | den 26 maj 2010 Kl 21:50
Jag trodde att en catch där man inte specade vilken typ av exception den tog emot tog alla övriga exceptions?

Ska kolla tracen och se vilken typ det är..
Skriven av: BlackMustard | den 26 maj 2010 Kl 22:36
det trodde jag också, men för att vara säker kan du ju alltid testa.

du är säker på att du inte återkastar det någonstans?
Skriven av: Tant102 | den 27 maj 2010 Kl 07:01
En tom catch (catch {...}) innebär att du fångar alla objekt som kastas, medans catch (Exception) { ... } innebär att du enbart fångar exceptions. I C# så kan du bara kasta exceptions, men med andra programmeringsspråk i .NET-miljön så kan du använda felhanteringen som en cool (och totalt felaktig) variant av körlogik, där du kan kasta en StringBuilder till den som väntar på det, istället för att returnera den, då den bara går ett steg uppåt i callstacken. ;)

Anyway, som tidigare framkommit så innebär unhandled exception enbart att du har ett fel som är unhandled, ohanterat. Av den meningen framgår det inte vilken typ av fel det är.

En liten hint är att try-catch enbart kan fånga fel djupare i callstacken, medans nya trådar börjar med en tom callstack. För fortsatt debugging så behöver vi en stacktrace.
Skriven av: gisjoe | den 27 maj 2010 Kl 12:11
Här kommer stack tracen:

Kod:

System.Runtime.InteropServices.COMException (0x8003001E): A disk error occurred during a read operation. (Exception from HRESULT: 0x8003001E (STG_E_READFAULT))
  at 3PartyClass.get_stuff()
  at MyClass.Data(String Path)
  at MyClass.fm_ViewData.fm_Load(Object sender, EventArgs e)
  at System.Windows.Forms.Form.OnLoad(EventArgs e)
  at System.Windows.Forms.Form.OnCreateControl()
  at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
  at System.Windows.Forms.Control.CreateControl()
  at System.Windows.Forms.Control.WmShowWindow(Message& m)
  at System.Windows.Forms.Control.WndProc(Message& m)
  at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
  at System.Windows.Forms.ContainerControl.WndProc(Message& m)
  at System.Windows.Forms.Form.WmShowWindow(Message& m)
  at System.Windows.Forms.Form.WndProc(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



Någon som kan tyda detta på något sätt?
Skriven av: vimpyboy | den 27 maj 2010 Kl 14:17
Försöker du eller komponenten läsa av någon fil? Har du rättigheter att öppna filen?

Gillar förresten namnet på metoden "get_stuff()".. ;)
Skriven av: gisjoe | den 27 maj 2010 Kl 14:47
Japp, den försöker läsa en datafil från disk och användaren har rättighet att läsa denna.

get_stuff rocks! :)
Skriven av: vimpyboy | den 27 maj 2010 Kl 14:56
Körs programmet med samma rättigheter som användaren? Vilket operativsystem är det?
NAVIGERING: [1] 2
 
     

  Svara på inlägg  
 
Du måste vara medlem på ASPsidan för att kunna skriva i forumet.
För att bli medlem klicka här.
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,2344 sekunder att ladda sidan