C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

ALP II: Objektorientierte Programmierung Sommersemester 2006
der Universität Oldenburg
Hochschule Fulda – FB ET Sommersemester 2010
Ein- und Ausgabe von Dateien
Forschungszentrum caesar
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
C Tutorium – Semaphoren –
Anbindung an Anwendungen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Dynamischer Speicher und Struktur
Objekte und Arbeitsspeicher
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Hochschule Fulda – FB ET Sommersemester 2010
Der C-Präprozessor EDV1 - 04Präprozessor.
EDV1 - Komplexe Datentypen
Einführung in Visual C++
Arrays,Strings&Pointer in C/C++
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Error Handling unter Visual FoxPro. © 1999 TMN-Systemberatung GmbH ON ERROR n ON ERROR DO ERRHAND WITH error(), sys(16), message(), lineno(1) – Globales.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Java Garbage Collection Angelika Kusel, Überblick Was ist Garbage Collection? Vor- und Nachteile von GC GC-Algorithmen/Verfahren Java Garbage.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Programmiersprache C 4
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Dynamische Datentypen
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Informatik Grundlagen, WS04, Seminar 7
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
C++ SFINAE inkl. std::enable_if
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Datenbanksystementwicklung – Systemarchitektur & Prozessmodell – Knut Stolze
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
C Tutorium – Memory Management – Knut Stolze. 2 Agenda Einführung in die Speicherverwaltung Stack vs. Heap Malloc Free Sizeof Tipps/Hinweise.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Einführung in die Programmierung
 Präsentation transkript:

C Tutorium – Fehlerbehandlung – Knut Stolze

2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann Fehler produzieren (Ausnahmen bestätigen die Regel!)

3 Fehler von Systemfunktionen Alle Systemfunktionen geben Fehlerinformationen zurück – strchr – NULL Zeiger – fopen – NULL Zeiger – strtol – 0 – shmget – -1 Zusätzliche Fehler werden über errno (vom Typ int) an Anwendung übermittelt

4 errno Header muss eingebunden werden. Errno ist keine (globale) Variable – Wäre nicht re-entrant – Abhängig von Plattform Auf Linux/Cygwin als Makro implementiert

5 errno (2) Definitionen der Fehlercodes in /usr/include/errno.h, z.B.: #define EPERM 1 /* Not super-user */ #define ENOENT 2 /* No such file or dir */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ Fehlercodes können system-abhängig sein – Immer Macros EPERM etc. verwenden

6 Vorsicht bei geschachtelte Funktionen strcpy(malloc(strlen(my_str)+1, my_str); – malloc kann fehl schlagen – strcpy arbeitet in diesem Fall mit NULL-Zeiger Lieber einzelne Schritte explizit programmieren ptr = (char *)malloc(strlen(my_str)+1); if (!ptr) { … /* Fehlerbehandlung */ } strcpy(ptr, my_str);

7 Typische Fehlerbehandlung in DB2 UDB sqlzRc myFunction(…) { sqlzRc rc = SQL_OK; char *buffer = NULL; … buffer = (char *)malloc(length); if (!buffer) { rc = SQLZ_OUT_OF_MEMORY; goto cleanup; }

8 Typische Fehlerbehandlung in DB2 UDB (2) rc = sqluimpr(…); if (rc != SQL_OK) { goto cleanup; } … cleanup: if (buffer != NULL) { free(buffer); }

9 Fehlerbehandlung Im Fehlerfall muss jede Funktion einen wohl- definierten Zustand zurücklassen, z.B. – Allokierten Speicher wieder freigeben – Geänderte Signal-Händler zurücksetzen – Fehlermeldungen setzen Nie, nie und nie exit oder abort verwenden!!! – Funktion kann innerhalb Bibliothek von anderen Programmen verwendet werden – exit/abort würde Programm beenden – Fehler einfach zum Aufrufer immer durchreichen

10 Numerische Besonderheiten Keine Laufzeitüberprüfungen bei numerischen Operationen – Überläufe und Unterläufe möglich; werden nicht erkannt müssen von Anwendung abgefangen werden Integer-Zahlen – signed/unsigned char/short/int/long/long long – Grenzen (min/max) in festgelegt Numerische Genauigkeit von Fliesskommazahlen