Hi,
bei meinem Programm soll der Benutzer die Addresse seiner Datenbank eingeben können. D.h. dabei können Fehler durch die Benutzereingabe auftreten, die ich abfangen möchte. Ich hab das jetzt versucht so umzusetzen:
public static string AccessPfad = "C:\\Tpwerte.mdb";
protected void Page_Load(object sender, EventArgs e)
{
try
{
AccessDataSource1.DataFile = AccessPfad;
}
catch (Exception a)
{
// Give the user some information, but
// stay on the default page
Response.Write("<h2>Default Page Error</h2>\n");
Response.Write("<p>Provide as much information here as is " +
"appropriate to show to the client.</p>\n");
Response.Write("Return to the <a href='Default.aspx'>" +
"Default Page</a>\n");
Response.Write(a);
}
}
Allerdings wird meine alternative Fehlerseite nicht aufgerufen, sondern weiterhin der Fehler angezeigt und die ASP Anwendung kann nicht weitergeführt werden.
Kann mir da jemand weiterhelfen?
Grüße und Danke im Vorraus
Hallo Perhalo,
du schreibst mit "Response.Write(...)" einen String raus, und dein letzter ist nun die komlette Exception. in deinem Fall "a".
Bau dir den String zusammen, eventuell unten die Exception dran und schicke ihn (dein HTML und die Exception, wenn du das willst) komplett in das Response.Write. Dann sollte es gehen.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Ich glaube der Fehler liegt woanders. Hauptsächlich daran, dass er den catch Block überhaupt nicht ausführt. Das vermute ich, weil alles was ich in der global.asax.cs unter nicht behandelten Fehlern ausführen lasse, er auch macht.
Das funktioniert zwar, so dass ich den Benutzer bei einem Fehler immer wieder zu derselben Stelle zurückführen kann. Allerdings möchte ich ja hier auch anzeigen können, dass ein falscher Pfad eingegen wurde bzw. eine nicht geeignete Datenbank vorliegt.
Hi Perhalo,
wird denn dann überhaupt die Page_Load-Methode ausgeführt?
Christian
Weeks of programming can save you hours of planning
Hallo Perhalo,
wieso prüfst du die Datenbankverbindung nicht kurz im try/catch? Hauts hin ist gut, wenn nciht sollte er in den catch gehen und alles da ausführen, was du beschreibst.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Jo,
halt jedesmal, wenn ich das entprechende Formular öffnen will, wird Page_Load ausgeführt. Mit einer falschen Addresse für die Datenbank bekomme ich den Fehler
Serverfehler in der Anwendung /.
Datei 'C:\Tpwerte.mdb' nicht gefunden.
Ausnahmedetails: System.Data.OleDb.OleDbException: Datei 'C:\Tpwerte.mdb' nicht gefunden.
und so weiter...
Was ganz interessant ist:
Habe jetzt weitergemacht und versuche auf meine TemplateFields zuzugreifen. Wenn ich einfach nur das hier dazufüge:
try
{
AccessDataSource1.DataFile = AccessPfad;
Einzelspur_LI_SOLL = ((TextBox)GridView1.FindControl("TextBox4")).ReadOnly;
}
wird die Exception ausgelöst und ich erhalte das gewünschte Ergebnis. Allerdings triggert er auf den Fehler der neuen Zeile und nicht auf den der alten...
Add Coffeebean: Wenn ich die Verbindung richtig einstelle geht es ohne Probleme. Allerdings kann es ja sein, dass der Benutzer etwas falsches als Pfad oder eine falsche Datenbank eingibt. Das möchte ich natürlich abfangen. Darum möchte ich, dass die Anwendung nicht einfach abschmiert, wenn der Benutzer eine falsche Eingabe macht.