Vra

IO = VS7 of 2002

Hi almal, ek het nog 'n baie vreemde probleem. Die kode nie blyk te wees die uitvoering as wat verwag is. Ek is dit wat deur die debugger en dit is die uitvoering regtig vreemd.

Ek het seker gemaak dat die virtuele gids is met behulp van ASP.NET 1.0.3705 gemaak.

Die kode volg en ek verduidelik wat die debugger wys my as die uitvoering stappe in die kommentaar:

try
{
    objConnection.Open();  // STARTS HERE
    objCommand.ExecuteNonQuery();  // DOES NOT THROW EXCEPTION
    int c = 0;  // THIS LINE IS EXECUTED
}
catch (SqlException sqle)
{

    LogError();  // THIS LINE IS NOT EXECUTED
    throw sqle;  // THIS LINE IS EXECUTED AFTER THE int c = 0; 
                 // sqle IS NULL
                 // EXCEPTION IS NOT CAUGHT AND 
                 // EXECUTION CONTINUES IN FINALLY BLOCK
}
finally
{
    // EXECUTES AS EXPECTED FROM HERE ON OUT,
    // AS THOUGH THE throw sqle; DID NOT HAPPEN.
    if (objConnection.State == ConnectionState.Open) objConnection.Close();
}

Het iemand hierdie vreemde gedrag ervaar voor? Enige idee hoe om dit op te los? Ek kan die metode omvattend verander, maar ek wil nog graag wou weet waarom dit gebeur.

Ek vermoed sedert die sqle is null dit is hoekom die gooi nie optree as wat verwag is. Maar hoekom het ons spring in hierdie kode blok in die eerste plek?

Ek het dit 'n paar keer herlaai, gered en herbou, en uitgevoer word met die debugger en gekyk hierdie gedrag meer as een keer.

Baie dankie aan almal vir jou hulp nodig!

Al die beste,

Graham

Was dit nuttig?

Oplossing

Wag .. jou kode nie 'n uitsondering te gooi en jy wonder hoekom dit die vangs blok nie uit te voer?

verander (verwysing kommentaar):

Dit klink regtig moeilik om te glo. Ek het nog nooit gehoor van 'n geval waar die werklike uitsondering binne die vangs blok was nul en as jy reeds genoem het die eerste reël in die vangs blok nie uit te voer wat in my opinie punte in die rigting wat daar was geen uitsondering nie.

Het jy probeer om die program vloei kyk deur die gebruik van outydse ontfoutingstegnieke (Debug.WriteLine) en draai die debugger?

My aanname is dat jy kyk na die verkeerde plek waar die uitsondering gegooi .. of is daar geen uitsondering nie.

Ander wenke

Baie vreemd. Ek is nie seker wat aangaan met jou kode, maar een ding wat ek gesien het, is die gebruik van:

catch (SqlException sqle)
{

    LogError();  // THIS LINE IS NOT EXECUTED
    throw sqle;  // THIS LINE IS EXECUTED AFTER THE int c = 0; 
                 // sqle IS NULL
                 // EXCEPTION IS NOT CAUGHT AND 
                 // EXECUTION CONTINUES IN FINALLY BLOCK
}

Jy wil om te skryf:

catch (SqlException sqle)
{

    LogError(); 
    throw; 
}

Om weer gooi die uitsondering nie.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top