SlideShare uma empresa Scribd logo
1 de 18
com rev. 2
Foco em
Escalabilidade Capacidade Máxima: 100 usuários 100 usuários = 100% 150 novos usuários Capacidade necessária: 250 usuários = 150%+!
#Comofas?
#Comofas2?
#Comofas3?
Load Balance 1 2 3 4 5 6
Tratamento de Exceções
Como tratar?
A solução! Global.asax protected void Application_Error(object sender, EventArgs e){    Exception ex = Server.GetLastError();    RSLHandler handler = new RSLHandler().Configure();    handler.Handle(ex);}
E o usuário ve isso...
Quando deveria ver...
A solução! Web.Config: <customErrorsdefaultRedirect=“erroPadrao.html" mode="On">  <error statusCode=“403" redirect=“NaoPermitida.html"/> 	<error statusCode=“404" redirect=“NaoEncontrada.html"/>  </customErrors>
Errado #1 private void Salvar(UsuarionovoUsuario) { //Abreconexão com banco de dados DataReader dr = cmd.Execute(sql); 	//Executaumainstruçãoquegera exception throw new Exception(“Whatever”); } Certo #1 private void Salvar(UsuarionovoUsuario) { DataReader dr = cmd.ExecuteReader(sql, CommandBehavior.CloseConnection); try { 	//Executaumainstruçãoquegera exception throw new Exception(“Whatever”); }finally{ dr.Close(); } }
Errado #2 private void Foo() { try { 	//Executa uma operação que lança exceção } catch (Exception ex) { 	string Message = ex.Message; 	throw ex; } } Certo #2 private void Foo() { try { 	//Executa uma operação que lança exceção } catch (Exception ex) { 	string Message = ex.Message; 	throw; } }
Logging/Debugging
var exemplo = (x => x.Log4Net) private void Log(string message) { ILog log = LogManager.GetLogger(“MyLoggerName”);  	log.Info(“Debug message”); 	log.Error(“A big error!”); } <log4net>  	<!-- A1 is set to be a ConsoleAppender -->  	<appender name=“MyAppender" type="log4net.Appender.ConsoleAppender">  	<!-- A1 uses PatternLayout -->  	<layout type="log4net.Layout.PatternLayout">  		<conversionPattern value=“ %-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />  	</layout>  	</appender>  	<!-- Set root logger level to DEBUG and its only appender to A1 -->  	<root>  		<level value="DEBUG" />  		<appender-ref ref="A1" />  	</root>  </log4net>
Contato Email:antonio.zegunis@fnac.com.br ou me@tucaz.net Blog: 	http://blog.tucaz.net Twitter: 	http://www.twitter.com/tucaz Referências http://msdn.microsoft.com/en-us/library/ff647787.aspx http://msdn.microsoft.com/en-us/library/ff649308.aspx http://msdn.microsoft.com/en-us/library/ms229014%28VS.80%29.aspx http://blog.tucaz.net/en/2009/07/21/basic-stuff-handling-exceptions-in-net/ http://logging.apache.org/log4net/release/manual/configuration.html http://haacked.com/archive/2005/03/07/ConfiguringLog4NetForWebApplications.aspx http://intrafnac.fnac.br/dosi/sistemas/WikiSistemas/Paginas%20Wiki/Home.aspx http://intrafnac.fnac.br/dosi/sistemas/WikiSistemas/Paginas%20Wiki/Tratamento%20de%20Exceções.aspx

Mais conteúdo relacionado

Semelhante a Café com Bug - 2a Edição em 13/05/2010

Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
Palestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingPalestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingLuis Gustavo Almeida
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scopeCarlos Santos
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Combinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaCombinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaMilfont Consulting
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryHarlley Oliveira
 
BDD com Easyb
BDD com EasybBDD com Easyb
BDD com EasybIsmael
 
Offline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesOffline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesCaelum
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09Carlos Santos
 
T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)Carlos Santos
 
Conhecendo o Struts 2 - Java Tech Day 2007
Conhecendo o Struts 2 - Java Tech Day 2007Conhecendo o Struts 2 - Java Tech Day 2007
Conhecendo o Struts 2 - Java Tech Day 2007Jaime Schettini
 
Programacao Com Asp Ii
Programacao Com Asp   IiProgramacao Com Asp   Ii
Programacao Com Asp Iiguest3118b2
 

Semelhante a Café com Bug - 2a Edição em 13/05/2010 (20)

Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Aula 2 - ASP
Aula 2 - ASPAula 2 - ASP
Aula 2 - ASP
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
Palestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingPalestra de segurança em PHP - Hacking
Palestra de segurança em PHP - Hacking
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Combinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaCombinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma prática
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQuery
 
BDD com Easyb
BDD com EasybBDD com Easyb
BDD com Easyb
 
Beagajs
BeagajsBeagajs
Beagajs
 
Artigoajax
ArtigoajaxArtigoajax
Artigoajax
 
Offline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesOffline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio Lopes
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 
T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)
 
Aplicacoes Web Com AJAX
Aplicacoes Web Com AJAXAplicacoes Web Com AJAX
Aplicacoes Web Com AJAX
 
Conhecendo o Struts 2 - Java Tech Day 2007
Conhecendo o Struts 2 - Java Tech Day 2007Conhecendo o Struts 2 - Java Tech Day 2007
Conhecendo o Struts 2 - Java Tech Day 2007
 
Programacao Com Asp Ii
Programacao Com Asp   IiProgramacao Com Asp   Ii
Programacao Com Asp Ii
 

Café com Bug - 2a Edição em 13/05/2010

  • 3. Escalabilidade Capacidade Máxima: 100 usuários 100 usuários = 100% 150 novos usuários Capacidade necessária: 250 usuários = 150%+!
  • 7. Load Balance 1 2 3 4 5 6
  • 10. A solução! Global.asax protected void Application_Error(object sender, EventArgs e){    Exception ex = Server.GetLastError();    RSLHandler handler = new RSLHandler().Configure();    handler.Handle(ex);}
  • 11. E o usuário ve isso...
  • 13. A solução! Web.Config: <customErrorsdefaultRedirect=“erroPadrao.html" mode="On"> <error statusCode=“403" redirect=“NaoPermitida.html"/> <error statusCode=“404" redirect=“NaoEncontrada.html"/> </customErrors>
  • 14. Errado #1 private void Salvar(UsuarionovoUsuario) { //Abreconexão com banco de dados DataReader dr = cmd.Execute(sql); //Executaumainstruçãoquegera exception throw new Exception(“Whatever”); } Certo #1 private void Salvar(UsuarionovoUsuario) { DataReader dr = cmd.ExecuteReader(sql, CommandBehavior.CloseConnection); try { //Executaumainstruçãoquegera exception throw new Exception(“Whatever”); }finally{ dr.Close(); } }
  • 15. Errado #2 private void Foo() { try { //Executa uma operação que lança exceção } catch (Exception ex) { string Message = ex.Message; throw ex; } } Certo #2 private void Foo() { try { //Executa uma operação que lança exceção } catch (Exception ex) { string Message = ex.Message; throw; } }
  • 17. var exemplo = (x => x.Log4Net) private void Log(string message) { ILog log = LogManager.GetLogger(“MyLoggerName”); log.Info(“Debug message”); log.Error(“A big error!”); } <log4net> <!-- A1 is set to be a ConsoleAppender --> <appender name=“MyAppender" type="log4net.Appender.ConsoleAppender"> <!-- A1 uses PatternLayout --> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value=“ %-4timestamp [%thread] %-5level %logger %ndc - %message%newline" /> </layout> </appender> <!-- Set root logger level to DEBUG and its only appender to A1 --> <root> <level value="DEBUG" /> <appender-ref ref="A1" /> </root> </log4net>
  • 18. Contato Email:antonio.zegunis@fnac.com.br ou me@tucaz.net Blog: http://blog.tucaz.net Twitter: http://www.twitter.com/tucaz Referências http://msdn.microsoft.com/en-us/library/ff647787.aspx http://msdn.microsoft.com/en-us/library/ff649308.aspx http://msdn.microsoft.com/en-us/library/ms229014%28VS.80%29.aspx http://blog.tucaz.net/en/2009/07/21/basic-stuff-handling-exceptions-in-net/ http://logging.apache.org/log4net/release/manual/configuration.html http://haacked.com/archive/2005/03/07/ConfiguringLog4NetForWebApplications.aspx http://intrafnac.fnac.br/dosi/sistemas/WikiSistemas/Paginas%20Wiki/Home.aspx http://intrafnac.fnac.br/dosi/sistemas/WikiSistemas/Paginas%20Wiki/Tratamento%20de%20Exceções.aspx