SizeLimitExceededException abfangen

Dimax

Top Contributor
Hallo Kollegen,

ich möchte alle Fehler beim Dateieinlesen abfangen ,das klappt aber nicht.
hier wird es eingelesen:
Code:
<FORM ENCTYPE="multipart/form-data" ACTION="addProg" METHOD=POST>
    <table style="border:none;margin-left: auto;margin-right: auto;" >
        <tbody>
            <tr>
                <td align="right">Einzulesende Datei: </td>
                <td align="left"><INPUT NAME="file" TYPE="file" class="file" required></td>       
            </tr>
            <tr><td></td></tr>
            <tr><td></td></tr>
            <tr>       
                <td align="right">Projekt-Name: </td>               
                <td align="left">
                    <select name="selectedId" size=1 class="standard">
                        <option th:each="el :${proj}" th:value="${el.projektId}"
                            th:text="${el.projektId}+'. '+${el.projekt}"></option>                   
                    </select><b><font color="red"> Falls kein Projekt zur Auswahl steht,
                        m&uuml;ssen Sie ein Projekt erstellen!</font></b>
                </td>
hier versuche ich die Fehler abzufangen:
Java:
Das ist Try Catch Block im Controller
try {
            if(!name.equals("txt")&&!name.equals("sas")&&!name.equals("sql")) {
                model.addAttribute("status",'c');
                model.addAttribute("site",3);
          
                return "/Fehler";
            }else {
                //System.out.println(">true<");
                }
            in = new DataInputStream(file.getInputStream());

            while (totalBytesRead < sizeFile) {

                byteRead = in.read(dataBytes, totalBytesRead, (int) sizeFile);

                totalBytesRead += byteRead;
            }
        } catch (Exception e) {
       
            if (e instanceof MaxUploadSizeExceededException) {
                model.addAttribute("status",'b');
                model.addAttribute("site",3);
                return "/Fehler";
            } 
System.out.println("Datei zu groß");
           ex.printStackTrace();
        }
Wie kann man diesen Fehler abfangen?->

org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException: the request was rejected because its size (89047335) exceeds the configured maximum (83886080)
 

Dimax

Top Contributor
wo fliegt der Fehler denn überhaupt?
er fliegt wenn ich versuche eine größere Datei einzulesen im Block 1 und im Controller :
Java:
@PostMapping("/addProg")
    public String addProgToDb(@RequestPart Part file,
                              @RequestPart String selectedId,
                              @RequestParam (value="progra_name", required=false) String progra_name,
                              @RequestParam (value="pageName", required=false) String pageName,
                              Model model) throws IOException {....
versuche ich den Fehler abzufangen.
ich vermute, dass der Spring die Größe der Datei prüft bevor er sie weiterleitet und wirft den Fehler.
 

KonradN

Super-Moderator
Mitarbeiter
Das Problem ist ja, dass das Problem nicht in Deinem Code auftritt, sondern bei der Auswertung des Requests selbst.

Da sind also zum einen die Request Size, die bei Tomcat durch maxPostSize begrenzt ist (und was Du im Connector in der server.xml konfigurieren kannst).

Und auf Applikationsebene muss es bei multipart ebenfalls eingestellt werden! Was nutzt Du genau? Bei Spring Boot wären es dann z.B. die Einstellung von diesen Werten:
spring.servlet.multipart.max-file-size=128KB
spring.servlet.multipart.max-request-size=128KB
(Die 128KB sind natürlich viel zu kleine Werte ... Du bist ja bereits im MB Bereich - um 80MB wenn ich das richtig gesehen habe!)
 

Dimax

Top Contributor
Danke Jungs, ich brauche aber die Grenze nicht erhöhen, sie soll so bleiben wie sie ist, aber ich möchte den Fehler abzufangen um auf die Error Seite zu umleiten.
 

KonradN

Super-Moderator
Mitarbeiter
Mir fehlen immer noch die genauen Informationen, was Du alles nutzt um die Applikation zu bauen.

Generell Tomcat selbst: Wenn der Request zu groß ist, dann ist es ein "Bad Request" mit Status Code 400 und da kann man in der web.xml natürlich eine Fehlerseite angeben. Also etwas wie:
XML:
    <error-page>
        <error-code>400</error-code>
        <location>/error/RequestTooLarge.html</location>
    </error-page>
(Wobei ein 400 nicht nur bei zu großen Requests kommen kann... Aber erst einmal egal)

Wenn es im Framework selbst kommt, dann kennen die in der Regel Wege, wie die Exception behandelt werden kann. JAX-RS kennt z.B. ExceptionMapper und Du kannst dann eine Klasse schreiben, die @Provider hat und die ExceptionMapper<SizeLimitExceededException> implementiert. Exception Handling With Jersey | Baeldung

Das einfach nur als ein genereller Ausblick. Wichtig ist, dass Du drei Ebenen hast, wo das Problem auftreten kann:
  • Tomcat selbst bekommt einen ungültigen Request (weil der Request z.B. größer ist als erlaubt). Dann behandelt Tomcat den Fehler selbst und Deine Applikation bekommt nichts mit.
  • Dein benutztes Framework bekommt den Request von Tomcat und bearbeitet diesen und dabei tritt ein Fehler auf. Dann wirft das Framework den Fehler bzw. behandelt diesen.
  • Als letztes kommt es zu Deinem Code: Das Framework hat den Request auswerten können, hat über irgendwelche Routing Mechanismen den Endpoint / Controller identifiziert und konnte den Request entsprechend aufbereiten. In dem Fall wird dann Deine Methode aufgerufen und Du kannst aktiv etwas machen und dann auf Exceptions reagieren.

==> Es ist also klar, dass Du in Deinem Code nur auf Exceptions in Deinem Code reagieren kannst. Alles, was außerhalb statt findet, kannst Du erst einmal in dem reinen Controller nicht behandeln. Da muss man dann genau schauen, was für Möglichkeiten es gibt. Und bei der ersten Ebene wäre es die web.xml, die eine Fehlerseite definieren kann. Und beim Framework kommt es auf das Framework an.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
Kirby.exe Alle möglichen Error Möglichkeiten abfangen Java Basics - Anfänger-Themen 33
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
D Wie kann man eine solche Fehlermeldung abfangen Java Basics - Anfänger-Themen 4
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
L Erste Schritte IndexOutOfBounce abfangen? Java Basics - Anfänger-Themen 17
M GUI - Fehler abfangen beim Dividieren Java Basics - Anfänger-Themen 8
J Fehler abfangen mit einer Bedingung Java Basics - Anfänger-Themen 3
B Erste Schritte Abfangen eines Fehlers/Ausbrechen aus der Schleife Java Basics - Anfänger-Themen 12
W In einer Function<Double, Double> undefinierte Rechenoperationen abfangen? Java Basics - Anfänger-Themen 3
D Input/Output Runtime().exec fehler abfangen Java Basics - Anfänger-Themen 4
A Int Eingabe: String mit Exception abfangen. Aber wie? Java Basics - Anfänger-Themen 3
P Variablen Abfangen von eingaben per java.util.Scanner und weiter Verarbeitung Java Basics - Anfänger-Themen 7
S java tastendrücke direkt abfangen und printen Java Basics - Anfänger-Themen 3
H Fehler im Konstruktor abfangen Java Basics - Anfänger-Themen 10
OnDemand Exception Abfangen Java Basics - Anfänger-Themen 5
T Division durch 0 abfangen mit Schleife Java Basics - Anfänger-Themen 4
B Erste Schritte Integer Eingabe über Scanner mit Abfangen von Eingabefehlern Java Basics - Anfänger-Themen 3
H Wie kann ich STRG+V abfangen und ändern Java Basics - Anfänger-Themen 2
B Exception abfangen Java Basics - Anfänger-Themen 33
D [jni] loadLibrary Exception abfangen Java Basics - Anfänger-Themen 9
M Windows Aktionen abfangen Java Basics - Anfänger-Themen 3
W Tastatureingabe abfangen Java Basics - Anfänger-Themen 15
S Exception abfangen Java Basics - Anfänger-Themen 2
N Fehlerquelle leere ArrayList elegant abfangen Java Basics - Anfänger-Themen 3
J Standard Exceptions abfangen Java Basics - Anfänger-Themen 5
M Datentypen Fehler abfangen Java Basics - Anfänger-Themen 5
J Eclipse Console Ausgaben Abfangen Java Basics - Anfänger-Themen 2
sylo Warnings abfangen Java Basics - Anfänger-Themen 2
F Falscheingabe abfangen - Endlosschleife Java Basics - Anfänger-Themen 5
H MouseEvent abfangen Java Basics - Anfänger-Themen 9
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
Spin Exception abfangen Java Basics - Anfänger-Themen 3
M Frage zum Abfangen ungültiger Werte Java Basics - Anfänger-Themen 9
I Fehlendes Argument in Main-Methode abfangen Java Basics - Anfänger-Themen 15
N Probleme beim abfangen von fehlern Java Basics - Anfänger-Themen 4
A FileNotFoundException abfangen? Java Basics - Anfänger-Themen 3
H Falsche Eingabe über try-catch abfangen Java Basics - Anfänger-Themen 2
Spin Abfangen von Fehlern Java Basics - Anfänger-Themen 9
M Exception abfangen? Java Basics - Anfänger-Themen 3
G Eine exception mit negativen zahlen abfangen ? Java Basics - Anfänger-Themen 11
I Dialog - "Ja" / "Nein" abfangen Java Basics - Anfänger-Themen 3
G SQLServerException abfangen Java Basics - Anfänger-Themen 2
C alle möglichen Datumseingaben im Textfeld abfangen Java Basics - Anfänger-Themen 12
G Enter Taste abfangen Java Basics - Anfänger-Themen 11
M Abfangen von java.lang.NumberFormatException Java Basics - Anfänger-Themen 6
T String: NeueZeile (" ") , Break etc. abfangen Java Basics - Anfänger-Themen 2
B Programm würft Exception, kann sie aber nicht abfangen! Java Basics - Anfänger-Themen 25
M Exceptions bei Textfeldern abfangen Java Basics - Anfänger-Themen 2
M JOptionPane.OK_OPTION abfangen oder disablen? Wie? Java Basics - Anfänger-Themen 3
M jToggleButton Klick abfangen ohne den Button zu deaktivieren Java Basics - Anfänger-Themen 2
B Tastatur abfangen Java Basics - Anfänger-Themen 11
U Pfeiltasten abfangen Java Basics - Anfänger-Themen 2
B Ausnahmen abfangen Java Basics - Anfänger-Themen 3
C Benutzereingaben vor Listener abfangen Java Basics - Anfänger-Themen 5
I InputStream von Konsole abfangen Java Basics - Anfänger-Themen 6
O allgemeine Exceptions abfangen Java Basics - Anfänger-Themen 17
P Auswahl von JComboBox abfangen Java Basics - Anfänger-Themen 3
T jcombobox, item-selektierung abfangen Java Basics - Anfänger-Themen 5
F Fehler beim Schreiben wenn Datei schreibgeschützt abfangen Java Basics - Anfänger-Themen 6
C System.out.println "abfangen"? Java Basics - Anfänger-Themen 8
rambozola selbst definierte exception abfangen funzt nicht Java Basics - Anfänger-Themen 14
S von CommandLine übergebene Parameter abfangen? Java Basics - Anfänger-Themen 12
V Mausklick mit rechter Taste abfangen? Java Basics - Anfänger-Themen 8
C falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
L GUI - Tastaturereignisse abfangen ohne Fokus? Java Basics - Anfänger-Themen 8
D Frage zum abfangen von Exceptions Java Basics - Anfänger-Themen 5
V JOP.showInputDialog Abbrechen Button, Exception abfangen Java Basics - Anfänger-Themen 2
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
F Exception in while-Schleife abfangen? Java Basics - Anfänger-Themen 2
F 2 numberformatexception abfangen? Java Basics - Anfänger-Themen 20
ven000m Exception abfangen Java Basics - Anfänger-Themen 9
H JTabel Selectionen abfangen Java Basics - Anfänger-Themen 2
L Java App + Exception abfangen Java Basics - Anfänger-Themen 2
G Fehler abfangen Java Basics - Anfänger-Themen 2
D Falscheingaben abfangen Java Basics - Anfänger-Themen 8
M Negative Werte abfangen Java Basics - Anfänger-Themen 18
G Abfangen von Falscheingaben Java Basics - Anfänger-Themen 4
C Exception abfangen->Klappt nicht ;( Java Basics - Anfänger-Themen 2
S Division durch null abfangen :freak: Java Basics - Anfänger-Themen 14
EagleEye Exception abfangen Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben