Czemu try..except nie przechwytuje AV?

0

No właśnie. Delphi 2005

Próbowałem też na chama:

try
  //kod
except
  on EAccessViolation do 
  begin
     showMessage('Błąd');
  end;
end;

ale też nie przechwytuje.

0

Przechwytuje wyjatek, ale jezeli uruchomisz aplikacje w srodowisku Delphi to i tak wywali na ekran informacje. Po uruchomieniu pliku wynikowego *.EXE (bezposrednio, nie pod kompilatorem) bedzie bedzie OK.

0

Możesz poustawiać środowisko tak by nie pokazywało. Możesz rozszerzyć podglądanie w środowisku w porównaniu z exekiem - a zdaje się, że z automatu jest tak ustawione.

0

Mam wyłączone "alarmowanie" o wyjątkach w Delphi.

Kwoli ścisłości. Wszystkie inne wyjątki są ładnie przechwytywane oprócz AV

0

To spróbuj tak...

{$D-} 
try
  //kod
except
  on EAccessViolation do
  begin
     showMessage('Błąd');
  end;
end;
{$D+} 
0
Opi napisał(a)

To spróbuj tak...

{$D-} 
try
  //kod
except
  on EAccessViolation do
  begin
     showMessage('Błąd');
  end;
end;
{$D+} 

To może być to. Co robi ta dyrektywa?

0

Generuje informacje dla debuggera. {$D+/-} to to samo, co {$DEBUGINFO +/-}

1 użytkowników online, w tym zalogowanych: 0, gości: 1