café com bug - 2ª edição em 13/05/2010
DESCRIPTION
Slides da apresentação que fiz na segunda edição do nosso encontro, Café com Bug, no dia 13/05/2010 realizado na WeFitTRANSCRIPT
![Page 1: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/1.jpg)
rev. 2
com
![Page 2: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/2.jpg)
Foco em
Escalabilidade
Tratamento de Exceções
Logging/Debugging
![Page 3: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/3.jpg)
EscalabilidadeCapacidade Máxima: 100 usuários
100 usuários = 100%
150 novos usuários
Capacidade necessária: 250 usuários = 150%+!
![Page 4: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/4.jpg)
#Comofas?
![Page 5: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/5.jpg)
#Comofas2?
![Page 6: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/6.jpg)
#Comofas3?
![Page 7: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/7.jpg)
Load Balance
1 2 3 4 5 6
![Page 8: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/8.jpg)
Tratamento de Exceções
![Page 9: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/9.jpg)
Como tratar?
Avisar Informar Armazenar
![Page 10: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/10.jpg)
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);}
![Page 11: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/11.jpg)
E o usuário ve isso...
![Page 12: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/12.jpg)
Quando deveria ver...
![Page 13: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/13.jpg)
A solução!
Web.Config:
<customErrors defaultRedirect=“erroPadrao.html" mode="On"> <error statusCode=“403" redirect=“NaoPermitida.html"/><error statusCode=“404" redirect=“NaoEncontrada.html"/>
</customErrors>
![Page 14: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/14.jpg)
Errado #1private void Salvar(Usuario novoUsuario){
//Abre conexão com banco de dadosDataReader dr = cmd.Execute(sql);//Executa uma instrução que gera exceptionthrow new Exception(“Whatever”);
}
Certo #1private void Salvar(Usuario novoUsuario){
DataReader dr = cmd.ExecuteReader(sql, CommandBehavior.CloseConnection);try {
//Executa uma instrução que gera exceptionthrow new Exception(“Whatever”);
}finally{dr.Close();
}}
![Page 15: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/15.jpg)
Errado #2
Certo #2
private void Foo(){
try {//Executa uma operação que lança exceção
} catch (Exception ex) {string Message = ex.Message;throw ex;
}}
private void Foo(){
try {//Executa uma operação que lança exceção
} catch (Exception ex) {string Message = ex.Message;throw;
}}
![Page 16: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/16.jpg)
Logging/Debugging
![Page 17: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/17.jpg)
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>
![Page 18: Café com Bug - 2ª Edição em 13/05/2010](https://reader035.vdocuments.site/reader035/viewer/2022062313/5588f582d8b42a65138b46da/html5/thumbnails/18.jpg)
Contato Email: [email protected] ou [email protected] Blog: http://blog.tucaz.netTwitter: http://www.twitter.com/tucaz
Referênciashttp://msdn.microsoft.com/en-us/library/ff647787.aspxhttp://msdn.microsoft.com/en-us/library/ff649308.aspxhttp://msdn.microsoft.com/en-us/library/ms229014%28VS.80%29.aspxhttp://blog.tucaz.net/en/2009/07/21/basic-stuff-handling-exceptions-in-net/http://logging.apache.org/log4net/release/manual/configuration.htmlhttp://haacked.com/archive/2005/03/07/ConfiguringLog4NetForWebApplications.aspxhttp://intrafnac.fnac.br/dosi/sistemas/WikiSistemas/Paginas%20Wiki/Home.aspxhttp://intrafnac.fnac.br/dosi/sistemas/WikiSistemas/Paginas%20Wiki/Tratamento%20de%20Exceções.aspx