Exception wird durch Try Catch Block nicht abgefangen

08/02/2008 - 11:43 von Marcus Schaefer | Report spam
Hallo,

Ich hab' gleich zwei Probleme mit der VB .NET 2005 Fehlerbehandlung.

1.) Math.log10(-12) erzeugt in meinem Programm einen Fehler (-> Punkt 2) und
nicht wie die Hilfe angibt, den Rückgabewert NaN

2.) Der dadurch erzeugte Fehler (System.ArithmeticException, Details s.u.)
wird nicht durch folgenden Try-Catch Block abgefangen

Try
Math.log10(value)
Catch ex As System.Exception
end try


Und um das ganze noch verwirrender zu machen, funktionieren die obigen 4
Zeilen in einem eigenem Projekt genau nach Erwartung.

Ich bin ziemlich verwirrt und hoffe, dass mir einer von Euch helfen kann.

Marcus


Exception Details:
=


System.ArithmeticException was unhandled
Message="Overflow or underflow in the arithmetic operation."
Source="System.Windows.Forms"
StackTrace:
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at
System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32
dwComponentID, Int32 reason, Int32 pvLoopData)
at
System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32
reason, ApplicationContext context)
at
System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason,
ApplicationContext context)
at System.Windows.Forms.Application.Run(ApplicationContext context)
at
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at cellZscope.My.MyApplication.Main(String[] Args) in
17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
at
System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext
activationContext, String[] activationCustomData)
at
System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext
activationContext)
at
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
 

Lesen sie die antworten

#1 Armin Zingler
08/02/2008 - 12:21 | Warnen spam
"Marcus Schaefer" schrieb
Hallo,

Ich hab' gleich zwei Probleme mit der VB .NET 2005 Fehlerbehandlung.

1.) Math.log10(-12) erzeugt in meinem Programm einen Fehler (->
Punkt 2) und
nicht wie die Hilfe angibt, den Rückgabewert NaN



VB 2008 Express, Framework 3.5 (oder 2.0) und in VB 2005 Express:

Msgbox(Math.log10(-12))

keine Exception sondern "n. def."

2.) Der dadurch erzeugte Fehler (System.ArithmeticException, Details
s.u.)
wird nicht durch folgenden Try-Catch Block abgefangen

Try
Math.log10(value)



value hat welchen Wert? Wenn -12, dann kann ich es nicht nachvollziehen,
da es hier keine Exception gibt.

Catch ex As System.Exception
end try


Und um das ganze noch verwirrender zu machen, funktionieren die
obigen 4
Zeilen in einem eigenem Projekt genau nach Erwartung.



Ach so, in welchem Projekt funktioniert es denn nicht, wenn nicht in
deinem eigenen?


Armin

Ähnliche fragen