It's good way to handle exception.

And I think it's better that it could pop dialog to tell users what's wrong.


http://www.mail-archive.com/[email protected]/msg03001.html
http://wiki.liftweb.net/index.php/HowTo_use_error_pages

On Tue, Dec 22, 2009 at 5:52 AM, Marius <[email protected]> wrote:

> Have you tried using in boot LiftRules.exceptionHandler.prepend
> (...)  ?
>
> Br's,
> Marius
>
> On Dec 21, 11:43 pm, tiro <[email protected]> wrote:
> > Hi,
> >
> > just wondering if anybody knows of a handy way to properly handle the
> > exceptions that are thrown when a user uploads a file that exceeds the
> > size limit (or who knows what else can happen)?
> >
> > The stack trace that I see in such a case is as follows -- and apart
> > from trying S.addAround I don't see a any place where one could insert
> > some exception handling:
> >
> > Message: org.apache.commons.fileupload.FileUploadBase
> > $SizeLimitExceededException: the request was rejected because its size
> > (7385713) exceeds the configured maximum (6291456)
> >         org.apache.commons.fileupload.FileUploadBase
> > $FileItemIteratorImpl.<init>(FileUploadBase.java:914)
> >         org.apache.commons.fileupload.FileUploadBase.getItemIterator
> > (FileUploadBase.java:331)
> >
> > org.apache.commons.fileupload.servlet.ServletFileUpload.getItemIterator
> > (ServletFileUpload.java:148)
> >
> net.liftweb.http.provider.servlet.HTTPRequestServlet$$anon$1.<init>
> > (HTTPRequestServlet.scala:110)
> >         net.liftweb.http.provider.servlet.HTTPRequestServlet.extractFiles
> > (HTTPRequestServlet.scala:100)
> >         net.liftweb.http.Req$$anonfun$5.apply(Req.scala:182)
> >         net.liftweb.http.Req$$anonfun$5.apply(Req.scala:156)
> >         net.liftweb.http.Req.x$17(Req.scala:351)
> >         net.liftweb.http.Req.uploadedFiles(Req.scala:350)
> >         net.liftweb.http.LiftSession.runParams(LiftSession.scala:306)
> >
> net.liftweb.http.LiftSession.processRequest(LiftSession.scala:492)
> >         net.liftweb.http.LiftServlet.net$liftweb$http$LiftServlet$
> > $dispatchStatefulRequest(LiftServlet.scala:261)
> >
> net.liftweb.http.LiftServlet$$anonfun$3.apply(LiftServlet.scala:171)
> >
> net.liftweb.http.LiftServlet$$anonfun$3.apply(LiftServlet.scala:171)
> >         net.liftweb.http.S$.net$liftweb$http$S$$wrapQuery(S.scala:974)
> >
> net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1$
> > $anonfun$apply$25.apply(S.scala:1114)
> >         net.liftweb.http.S$.net$liftweb$http$S$$doAround(S.scala:911)
> >         net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit
> > $1.apply(S.scala:1112)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.S$.net$liftweb$http$S$$_nest2InnerInit(S.scala:1111)
> >
> net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun
> > $apply$28$$anonfun$apply$29$$anonfun$apply$30$$anonfun$apply$31.apply
> > (S.scala:1133)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun
> > $apply$28$$anonfun$apply$29$$anonfun$apply$30.apply(S.scala:1132)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun
> > $apply$28$$anonfun$apply$29.apply(S.scala:1131)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun
> > $apply$28.apply(S.scala:1130)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1.apply
> > (S.scala:1129)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >         net.liftweb.http.S$.net$liftweb$http$S$$_innerInit(S.scala:1128)
> >
> net.liftweb.http.S$$anonfun$_init$1$$anonfun$apply$38$$anonfun$apply
> > $39$$anonfun$apply$40$$anonfun$apply$41$$anonfun$apply$42.apply
> > (S.scala:1175)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.S$$anonfun$_init$1$$anonfun$apply$38$$anonfun$apply
> > $39$$anonfun$apply$40$$anonfun$apply$41.apply(S.scala:1174)
> >
> net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:325)
> >         net.liftweb.http.RequestVarHandler$.apply(Vars.scala:248)
> >
> net.liftweb.http.S$$anonfun$_init$1$$anonfun$apply$38$$anonfun$apply
> > $39$$anonfun$apply$40.apply(S.scala:1173)
> >
> net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:325)
> >
> net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:252)
> >
> net.liftweb.http.S$$anonfun$_init$1$$anonfun$apply$38$$anonfun$apply
> > $39.apply(S.scala:1172)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.S$$anonfun$_init$1$$anonfun$apply$38.apply(S.scala:
> > 1171)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >         net.liftweb.http.S$$anonfun$_init$1.apply(S.scala:1170)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >         net.liftweb.http.S$._init(S.scala:1169)
> >         net.liftweb.http.S$.init(S.scala:825)
> >         net.liftweb.http.LiftServlet.doService(LiftServlet.scala:170)
> >         net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply
> > (LiftServlet.scala:72)
> >         net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply
> > (LiftServlet.scala:72)
> >
> net.liftweb.util.TimeHelpers$class.calcTime(TimeHelpers.scala:242)
> >         net.liftweb.util.Helpers$.calcTime(Helpers.scala:30)
> >         net.liftweb.util.TimeHelpers$class.logTime(TimeHelpers.scala:251)
> >         net.liftweb.util.Helpers$.logTime(Helpers.scala:30)
> >         net.liftweb.http.LiftServlet.doIt$1(LiftServlet.scala:71)
> >         net.liftweb.http.LiftServlet.service(LiftServlet.scala:76)
> >         net.liftweb.http.provider.HTTPProvider$$anonfun$service$3.apply
> > (HTTPProvider.scala:55)
> >         net.liftweb.http.provider.HTTPProvider$$anonfun$service$3.apply
> > (HTTPProvider.scala:55)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >         net.liftweb.http.URLRewriter$.doWith(Req.scala:518)
> >         net.liftweb.http.provider.HTTPProvider$class.service
> > (HTTPProvider.scala:54)
> >         net.liftweb.http.LiftFilter.service(LiftServlet.scala:523)
> >         net.liftweb.http.provider.servlet.ServletFilterProvider
> > $class.protected$service(ServletFilterProvider.scala:43)
> >
> net.liftweb.http.LiftFilter.protected$service(LiftServlet.scala:523)
> >         net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun
> > $doFilter$1$$anonfun$apply$1.apply(ServletFilterProvider.scala:43)
> >         net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun
> > $doFilter$1$$anonfun$apply$1.apply(ServletFilterProvider.scala:38)
> >
> net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$9$$anonfun$apply
> > $10$$anonfun$apply$11$$anonfun$apply$12.apply(Vars.scala:331)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$9$$anonfun$apply
> > $10$$anonfun$apply$11.apply(Vars.scala:330)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$9$$anonfun$apply
> > $10.apply(Vars.scala:329)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >         net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$9.apply
> > (Vars.scala:328)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:327)
> >         net.liftweb.http.RequestVarHandler$.apply(Vars.scala:248)
> >         net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun
> > $doFilter$1.apply(ServletFilterProvider.scala:37)
> >         net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun
> > $doFilter$1.apply(ServletFilterProvider.scala:37)
> >
> net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$9$$anonfun$apply
> > $10$$anonfun$apply$11$$anonfun$apply$12.apply(Vars.scala:331)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$9$$anonfun$apply
> > $10$$anonfun$apply$11.apply(Vars.scala:330)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$9$$anonfun$apply
> > $10.apply(Vars.scala:329)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >         net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$9.apply
> > (Vars.scala:328)
> >         net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:67)
> >
> net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:327)
> >
> net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:252)
> >
> net.liftweb.http.provider.servlet.ServletFilterProvider$class.doFilter
> > (ServletFilterProvider.scala:36)
> >         net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:523)
> >         org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
> > (ServletHandler.java:1115)
> >
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> > 361)
> >         org.mortbay.jetty.security.SecurityHandler.handle
> > (SecurityHandler.java:216)
> >
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
> > 181)
> >
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
> > 766)
> >
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
> >         org.mortbay.jetty.handler.ContextHandlerCollection.handle
> > (ContextHandlerCollection.java:230)
> >         org.mortbay.jetty.handler.HandlerCollection.handle
> > (HandlerCollection.java:114)
> >
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
> > 152)
> >         org.mortbay.jetty.Server.handle(Server.java:324)
> >
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
> > 535)
> >         org.mortbay.jetty.HttpConnection$RequestHandler.content
> > (HttpConnection.java:880)
> >         org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:746)
> >         org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
> >         org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> >         org.mortbay.io.nio.SelectChannelEndPoint.run
> > (SelectChannelEndPoint.java:409)
> >         org.mortbay.thread.QueuedThreadPool$PoolThread.run
> > (QueuedThreadPool.java:522)
> >
> > I did move to the OnDiskFileParamHolder, but that doesn't make a
> > difference I guess.
> >
> > The behavior I want of course is to issue some S.error(...) but go on
> > displaying the template and preserving the other posted field
> > contents.
> >
> > Thanks a lot,
> >
> > Tim
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<liftweb%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=en.
>
>
>


-- 
Scala中文社区:  http://groups.google.com/group/scalacn

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.


Reply via email to