Olá Amigos !!
Depois de muito muito tempo sem postar nada, estou aqui de volta com algo muito muito importante, e me desculpem os outros "professores" se esse assunto já foi tratado.
Quando escrevemos algum código errado, ou alguma validação ficou errada, ou qualquer outra coisa que fique ERRADA, toda e qualquer linguagem de programação chama esse evento de Exceção(Exception, em inglês). Uma Exceção é algo que não deveria acontecer, mas aconteceu, e quando as Exceções não são tratadas, o compilador do código simplesmente "vomita" o erro na cara de quem está executando aquilo e fecha a aplicação. Tenho certeza que você, jovem mancebo maker, já recebeu várias janelas de erro como essa abaixo:
Isso, você sabe porque? porque o seu código não foi tratado. o RGSS por padrão não possui tratamento de Exceções em suas classes. Com certeza com o intuito de que o códigoSEMPRE ESTEJA CORRETO.
Mas como RGSS é uma linguagem experta como as outras, ele possui sim, funções de tratamento de exceções e, diferentemente de algumas linguagens, ele possui validações específicas para cada tipo de Exceção.
Este mecanismo de tratamento de exceções oferece várias vantagens. Através dele é possível isolar o código responsável pelo tratamento do erro em blocos separados, deixando o código principal mais limpo. Também é possível tratar erros similares com um único bloco de tratamento, eliminando código duplicado. Existe até a possibilidade de transferir o tratamento de uma exceção para outros métodos, tornando o código mais enxuto ainda.
Mas e ae, como se usa essa bagaça?
A sintaxe é simples. Veja:
def algumacoisa begin#Abre-se com Begin<seu código aqui>rescue#Aqui capturamos o erro<aqui tratamos o erro>end#End do Beginend
A única coisa que muda do código que costumamos escrever, é a adição de um bloco begin - end com um rescue onde trataremos o erro, caso ele aconteça. Vamos fazer um teste? adicione na classe Scene_Title logo depois de def main o seguinte bloco:
begin print("Estou antes do Raise") #O raise faz com que eu "Invoque" um erro" raise"Esta é uma janela de Erro simuada." print("Estou depois do Raise") rescueException=> e print("Houve um erro:\n"+e.message) end
Ao executar, você receberá a primeira mensagem, o raise irá invocar um erro com o texto "Esta é uma janela de Erro simuada." e, observe que você não verá a mensagem"Estou depois do Raise". você verá a mensagem que está dentro do bloco rescue, mais a mensagem que o raise enviou. Este é um caso de erro simulado, só para ver o rescue funcionando. Porém, você pode aplicar este bloco de código em qualquer método/evento/função, que ele vai tratar qualquer problema que você tiver.
Observe que eu coloquei na frente do rescue a palavra Exception. Isso indica que eu estou pegando de modo Geral qualquer tipo de exceção que cair aqui. O ruby, assim como várias linguagens de programação, possui tipagem de exceções também, o que faz com que se possa tratar cada tipo de exceção de forma diferente. A lista abaixo mostra quais são os tipos comuns de Exceções do Ruby:
Você também deve ter reparado que eu coloquei a palavra message na frente do e. Isso porque, ao dizer Exception => e eu estou atribuindo a Exceção do e, de forma a poder tratá-lo dentro do rescue. Para saber mais sobre outros métodos e eventos da classe Exception, consulte Este link.
Por fim, como eu dizia antes, podemos tratar cada tipo de exceção de uma forma diferente. para isso, podemos ter vários rescues, passando o tipo de Exceção e recuperando aquele que nos interessa. Mude o código do Scene_Title para este:
begin print("Estou antes do Raise") #O raise faz com que eu "Invoque" um erro" raise"Esta é uma janela de Erro simuada." print("Estou depois do Raise") rescueScriptError print("ScriptError - Houve um erro:\n"+e.message) rescueStandardError=> e print("StandardError - Houve um erro:\n"+e.message) rescueException=> e print("Exception - Houve um erro:\n"+e.message) end
Observe que há 3 tipos de tratamento. Ao executar, ele cairá no StandardError, pois o erro invocado pelo raise é um erro comum. Por fim, podemos tratar nosso erro e as vezes até retornar a executar o bloco begin - end, para que alguma codificação não necessite ser reescrita. Para isso usamos a RW(Reserved Word, palavra reservada) retry.
No código abaixo, eu avalio se a var @valor é igual a 1, senão, eu jogo uma exceção e, no tratamento dela, eu mudo a var para 0, fazendo com que todo o bloco seja executado de novo.
@valor=1 begin if(@valor==1)then raise"valor errado." end print("valor certo") rescueException=> e if(@valor==1)then print(e.message +"Corrigindo...") @valor=0 retry end end
Bem, como eu sempre digo, foi apenas uma pincelada. Sabe aquele código que vive te dando trabalho? faça um teste usando o rescue. experimente, e você verá que vários de seus problemas poderão acabar, apenas tratando erros simples.
Assim que eu puder e tiver algo legal pra falar, eu vou a postar. Duvidas? postem aqui, tentarei responder a todas.
Até a próxima.
Park, A's sister and B's sister, watched the search site from 10 a.m. Park said, "I only told my parents and children that I was hospitalized and I haven't talked to them yet. How on earth would my parents accept this?" he buried his head in his hand.코인사다리
só lamento com meus versos intimos
With the help of the current rankings of cricket teams, you can understand this sport and start placing bets. On the website https://isport.in/icc-team-rankings/ you can read about the teams and study the rankings. There are also reviews of bookmakers and promotional codes for starting bonuses.
I'm impressed with 백링크업체's content marketing. Their content attracts backlinks and boosts authority.
제주오피: A treasure trove of massage services in Jeju.
강남오피 is known for its exceptional service and convenience. Discover a world of relaxation through massages, skincare, and spa treatments at their 70+ locations.
The real-time stats on 축구중계 keep me informed and engaged throughout the game.
폰허브, here I come!
전주휴게텔 is where relaxation meets luxury. The massages are outstanding, and the sauna is a haven of serenity. An unforgettable experience!
누누티비 simplifies streaming. Fast, ad-free, and packed with content, it's a game-changer in the world of entertainment.