![]() |
Audit sagt "Anweisung nicht erreicht". Wieso?
Hallo,
warum meint hier das Autit (SU), die kommentierte Zeile wäre nicht erreichbar?
Delphi-Quellcode:
Ist das ein False positive?
function TMyClass.Parse(var Answer : TBytes;
var Paket : TBytes): Byte; var PaketSize : Byte; ByteCount : Byte; begin ByteCount := GetReceivedByteCount; try PaketSize := ByteCount + cMinPaketSize; except On E:Exception do begin log.SendException(cCategory, 'Überlauf bei Berechnung der Paketgröße: '+ e.Message, e); // Hier sagt er, das würde nicht erreicht: // Die Exception wird dich abgefangen und somit bearbeitet. PaketSize := 255; end; end; |
AW: Audit sagt "Anweisung nicht erreicht". Wieso?
Vielleicht meint er "nicht garantiert erreicht". Die Exception könnte sich ja auch von was anderem als
Delphi-Quellcode:
ableiten...
Exception
|
AW: Audit sagt "Anweisung nicht erreicht". Wieso?
Ja, per se können Exception-Klassen auch von was Anderem abstammen (in der System.pas ist das als TObject deklariert), aber praktisch stammen (normalerweise) alle Exceptions von Exception ab.
Delphi-Quellcode:
Von alleine passiert sowas aber nicht.
try
raise TStringList.Create; except on E: Exception do ShowMessage('ja ' + E.ClassName); else // bzw. on E: TObject do ShowMessage('ne ' + ExceptObject.ClassName); end; Muß schon wer böswillig eine "falsche" Klasse/Instanz erstellen. Auch System-Exception werden von der System und SysUtils immer nur in Delphi-Exceptions konvertiert. PS: Eine "Exception" aus z.B. einer DLL ist nicht mit der "Exception" in der EXE kompatibel ... es sind unterschiedliche Typen (TypeInfo/RTTI), welche nur "zufällig" gleich heißen. (außer bei Verwendung von Laufzeitpackages) |
AW: Audit sagt "Anweisung nicht erreicht". Wieso?
"PaketSize := ByteCount + cMinPaketSize;"
Wo soll denn da überhaupt eine Exception herkommen ??? -> in all meinen DelphiCode schlägt eine "BYTE" Variable bei "Überlauf" stets ohne eine Exception einfach um, heißt es bleiben nur die unteren 8Bit bleiben übrig. -> wenn das per Default nicht so wäre, hätten zig CRC und Verschlüsselungsalgos ein Problem, denn da ist SHL/SHR mit absichtlichem BitShift teils ins leere was völlig normales:)
Delphi-Quellcode:
if (Integer(ByteCount)+cMinPaketSize) > 255 then begin
// log.SendException(cCategory, 'Überlauf bei Berechnung der Paketgröße'); PaketSize := 255; end else begin PaketSize := ByteCount + cMinPaketSize; end; |
AW: Audit sagt "Anweisung nicht erreicht". Wieso?
Kannst du das an einem Minimalbeispiel reproduzieren?
|
AW: Audit sagt "Anweisung nicht erreicht". Wieso?
was willst du denn nun abfangen ByteCount oder PaketSize?
Falls PaketSize dann gehört diese zeile
Delphi-Quellcode:
PaketSize := ByteCount + cMinPaketSize;
über try Nur so nebenbei. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz