On Mon, 13 Dec 2010, J.H. wrote: > On 12/12/2010 04:46 PM, Jakub Narebski wrote: > > The following two patch series changes improve error / exception > > handling in gitweb, preparing the way for gitweb output caching, but > > useful even without it. > > > > I'm sending this patch series early to gather feedback on possible > > ways of improving error / exception handling in gitweb. > > Personally, instead of another band-aid over this problem, and adding > (or further legitimizing) goto statements inside gitweb I'd much *MUCH* > rather we actually put in the work to actually clean this up. That's not band-aid, that's using Perl exception mechanism. Gitweb uses die_error() like one would ordinarily use "die". > This is the direction I'm heading in, which I mentioned in an earlier > e-mail. Well, then how do you want to handle errors? Note that die_error calls are sometimes nested quite deep in the call stack, so using return value to denote errors and checking it is rather out of question: it would significantly increase complexity of code for no gain. Nevertheless I'll take a look how it is solved in other web applications written in Perl, like SVN::Web or CPAN Hubble. > There are a *LOT* of disadvantages to the eval mechanism in perl. It's > the standard but gitweb is getting more and more complex, and eval is > simplistic. Couple that with the complexity and uncertainty that things > like goto add to the code, I would *MUCH* rather not see this series go > in, as I think it is the wrong approach to fixing this. eval / die is not like goto, but like exception mechanism in other languages. I'd prefer to use Try::Tiny or TryCatch, but we have this "no extra dependencies" policy for gitweb. -- Jakub Narebski Poland -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html