Not logged in. · Lost password · Register

gabriel2029
Member since Nov 2018
52 posts
Subject: Fragen zur Fehlerbehandlung in Klausuren
Hallo,

mir ist bei einigen Aspekten noch nicht ganz klar, wie man dort in der Klausur bei der Fehlerbehandlung agieren soll.

Allgemein: Ist das Abstürzen des Programmes mittels die erlaubt oder nicht? Hier existieren widersprüchliche Aussagen; manchmal ist es in den Klausuren explizit erlaubt, wann anders wieder verboten (-> dann ist es klar). Wie ist es aber im allgemeinen Fall? Soweit ich es mitbekommen habe, darf man das, es sei denn, es handelt sich um einen Server, der nicht abstürzen soll, oder um Bibliotheksfunktionen.

Wenn ein Fehler aufgetreten ist, muss man danach folgende Funktionen nicht mehr fehlerbehandeln. Bsp: Wenn fgetc fehlschlägt, muss man das nachfolgende fclose nicht mehr fehlerbehandeln (zumindest laut Übung). Gilt das auch für fputs-Aufrufe, welche eine Fehlermeldung an einen Client signalisieren (siehe insbesondere die Klausur https://www4.cs.fau.de/Lehre/WS15/V_SP2/Pruefung/2015w-SP-… die Methode handleCommand -> hier ist aber eh die Frage, ob man printf etc. fehlerbehandeln muss, siehe unten).

Ist die Ausgabe mittels perror immer erlaubt, notwendig oder sogar verboten? In einigen Klausuren muss man Methoden implementieren, die im normalen Fall 0 und im Fehlerfall -1 zurückgeben. Was gilt hier?
(Außerdem speziell zur Klausur https://www4.cs.fau.de/Lehre/WS14/V_SP2/Pruefung/2014w-SP-…: Hier steht bei der Methode show, dass im Fehlerfall -1 zurückgegeben werden muss, aber trotzdem versucht werden sollte, das Verzeichnis möglichst lange abzusuchen. Wenn spricht man von einem Fehlerfall? Nur wenn z. B. opendir fehlschlägt oder sobald irgendein Fehler auftritt, der aber nicht zur Beendigung der Funktion führt.)

Zur maximalen Zeilenlänge: Wenn eine maximale Zeilelänge von z. B. 1024 Zeichen eingegeben ist, wie ist zu verfahren, wenn eine längere Zeile eingelesen wird: Darf man das ignorieren oder darf man einfach sterben oder muss man das aufwendig fehlerbehandeln (also insbesondere den Rest der Zeile auslesen mittels fgetc auslesen, wenn weitere Zeilen folgen)? Wann darf man außerdem davon ausgehen, dass das Terminator-Symbol ('\0') in Anfragen/Textdateien/etc. vorkommt und wann nicht?

In älteren Klausuren wurde für Clientverbindungen oft fopen(blub, "r+") (zumindest laut Lösungsversuchen, und die Funktionsargumente haben das so implizit), d. h. ein Filepointer sowohl fürs Lesen als auch für das Schreiben verwendet. Inzwischen nutzt man aber zwei FILE-Pointer, einen fürs Schreiben und einen fürs Lesen. Kann man davon ausgehen, dass man das auch hier so macht?

Letztes Semester musste man anscheinend printf etc. nicht fehlerbehandeln (Link: https://fsi.cs.fau.de/forum/thread/17608-Fehlerbehandlunge…). Gilt es auch für dieses Semester?


LG Gabriel


// Edit: Noch ne Sache, die mir eingefallen ist: Wenn eine Anfragezeile, z. B. "BLUB 1234", dasteht, ist der Command auch gültig, wenn mehrere Leerzeichen dazwischen sind, z. B. "BLUB     1234" (dann könnte man ja strtok/strtok_r verwenden).

// Edit2: Darf man eigentlich readdir in mehrfädigen Programmen verwenden?
This post was edited 3 times, last on 2020-02-13, 10:09 by gabriel2029.
TOKAMAK
Member since Oct 2014
125 posts
zu EDIT 2:  wenn der dir pointer auf unterschiedliche Verzeichnisse zeigt, darfst du readdir in threads verwenden, nur wenn du auf dem gleichen dir-pointer liest, dann wirds kritisch (haha), da die Struktur intern wiederverwendet wird beim nächsten Aufruf und somit verändert wird, dann steht evtl. nichtmehr das drin was du dir wünscht
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen