ScriptsGuia

Erros e resultados

Quando uma execução falha, o Waiso não entrega um paredão de texto. A aba de saída mostra um bloco de erro: o tipo do erro, a mensagem e a pilha como uma lista de frames — as suas linhas primeiro, os detalhes internos das bibliotecas recolhidos. Clique num frame para cair naquela linha; clique em Corrigir com IA para mandar o erro, o código e as entradas ao assistente. Quando uma execução dá certo com uma lista de registros, a mesma aba mostra isso como uma tabela que dá para buscar, ordenar e baixar.

8 min de leituraAntes: Escrevendo códigoAbrir no Waiso
O que você vai aprender
  • Ler o bloco de erro: tipo, mensagem e frames
  • Pular de um frame para a linha que falhou
  • Pedir ao assistente que corrija o erro com o contexto anexado
  • Buscar, ordenar e exportar um resultado em lista como CSV

O que uma execução com falha conta

Toda execução com falha traz um erro estruturado, não só uma linha de texto. Ele diz que tipo de falha foi, o tipo do erro (ZeroDivisionError, RangeError, timeout…), a mensagem e — para um erro que o seu código levantou — os frames: arquivo, linha e função de cada passo da pilha, cada um marcado como seu código ou não. O mesmo registro é o que a página Execuções, quem chama a API e um passo de flow veem.

broken.pyPlatform SDKImportar biblioteca
1def average(orders):2    return sum(o["total"] for o in orders) / len(orders)3 4def main(day: str = "2026-10-15"):5    orders = load_orders(day)6    return {"average": average(orders)}
SaídaLogs2Problemas0Falhou#18C8A6 · 133 msLimparRodar Ctrl ↵
ZeroDivisionError
division by zero
Mostrar 3 frames internos
linha 6em main
return {"average": average(orders)}
linha 2em average
return sum(o["total"] for o in orders) / len(orders)
Corrigir com IACopiar
O bloco de erro: tipo e mensagem no topo, os seus frames como links, frames internos recolhidos, Corrigir com IA no rodapé.
Tipo de falhaO que aconteceuFrames
ExceçãoO seu código levantou ou lançou um erro (inclusive erro de sintaxe)Sim, para Python e TypeScript/JavaScript
EntradaUma entrada foi recusada antes da execução (invalid_parameter) — veja Entradas do scriptNão
PlataformaUm tempo limite, um cancelamento, um worker perdido, um pacote que não instalouNão

Leia um erro e vá até ele

Execute este script com o padrão (uma lista vazia). O Python divide por zero; a versão TypeScript lança o próprio RangeError.

average.py
def average(values: list[float]) -> float:
    return sum(values) / len(values)


def main(values: list[float] = []):
    return {"average": average(values)}
  1. Leia o título

    O bloco abre com o tipo sobre a mensagem: ZeroDivisionError — division by zero. Uma falha de plataforma mostra o código, como timeout; a última linha do log diz isso em palavras (O script estourou o tempo limite).

  2. Siga os seus frames

    Embaixo, cada frame seu diz linha 2 em average, com aquela linha de código ao lado — a chamada mais funda por último. Clique num deles: o editor põe o cursor naquela linha e a centraliza. Frames do runtime, do SDK ou de pacotes instalados ficam recolhidos em Mostrar 3 frames internos; uma pilha muito funda mantém os primeiros e os últimos frames e recolhe o meio.

  3. Confira os logs

    A aba Logs ainda tem tudo que o script imprimiu antes de falhar, com uma caixa de busca e um filtro de nível (Todos os níveis, Info, Aviso, Erro, Sistema).

Corrigir com IA

No rodapé do bloco de uma exceção, Corrigir com IA abre a aba Chat IA do editor com a mensagem Corrija o erro que esta execução gerou. já escrita e um chip ZeroDivisionError · código e entradas anexados. Nada é enviado até você clicar em Enviar — acrescente uma frase sua se souber qual deve ser a correção, ou tire o anexo no ×. O assistente responde com uma alteração proposta, que você revisa como código antes de ela mexer no rascunho; veja O chat de IA do editor.

O botão aparece para erros que o seu código levantou. Uma falha de plataforma (tempo limite, worker perdido) não tem nada no código para corrigir, então não tem botão; um pacote que não instalou oferece Declarar pacote ou Alterar versão, que abrem o painel Dependências com o pacote preenchido. Copiar erro copia o erro inteiro como texto.

average.py
def average(values: list[float]) -> float | None:
    if not values:
        return None
    return sum(values) / len(values)


def main(values: list[float] = []):
    return {"average": average(values)}

Resultados como tabela

Uma execução bem-sucedida mostra o que main devolveu como JSON formatado. Quando o resultado é uma lista de registros — um array de objetos com até 50 chaves diferentes entre eles — ele abre como tabela: uma coluna por chave, uma caixa Buscar linhas que procura em qualquer célula, a contagem de linhas (2 de 3 linhas durante a busca), cabeçalhos que ordenam com um clique (crescente, decrescente, volta à ordem original) e um botão CSV que baixa as linhas. Os ícones ao lado alternam entre tabela e JSON, copiam o JSON, baixam como arquivo .json ou expandem o resultado para a tela toda.

top_products.py
def main(limit: int = 3):
    products = [
        {"sku": "A-100", "name": "Stapler", "sold": 42, "price": 12.5},
        {"sku": "B-220", "name": "Pen", "sold": 130, "price": 2.0},
        {"sku": "C-310", "name": "Backpack", "sold": 17, "price": 89.9},
        {"sku": "D-404", "name": "Ruler", "sold": 64, "price": 3.4},
    ]
    products.sort(key=lambda p: p["sold"], reverse=True)
    return products[:limit]
Saída esperadaSucessoTrês registros — abertos como tabela, com “3 registros retornados” embaixo
#
Execute e leia a aba de saída.

O que cada linguagem informa

  • Python — a classe e a mensagem da exceção, frames do traceback; um erro de sintaxe aponta a linha e a coluna. sys.exit() falha como SystemExit.
  • TypeScript e JavaScript — o name e a message do erro e os frames da pilha. Lance um Error (não uma string solta) para manter os frames.
  • C e C++ — um código de saída diferente de zero ou uma queda faz a execução falhar com a última linha que o programa escreveu em stderr e o código de saída ou sinal (terminated by signal 11 (SIGSEGV)); não há frames. Um erro de compilação para a execução antes de ela começar, com a mensagem do gcc no texto do erro.

Códigos de plataforma que podem aparecer

CódigoSignificado
timeoutA execução passou do tempo limite (5 minutos, a menos que mudado em Configurações do script)
cancelledAlguém clicou em Parar
worker_lostO worker que rodava sumiu no meio
worker_unavailableNenhum worker conseguiu iniciar (também um erro de compilação C/C++, ou um processo morto antes de responder)
dependency_*Um pacote Python não pôde ser instalado — veja Dependências

Limites

  • Uma pilha guarda no máximo 60 frames (os 20 primeiros e os 40 últimos); o texto do traceback guarda os últimos 64 KB.
  • Frames clicáveis e Corrigir com IA ficam no editor. Na página Execuções o mesmo erro aparece só para leitura.
  • Busca, ordenação e CSV funcionam numa lista de registros no primeiro nível; um objeto único pode virar uma tabela chave/valor, mas abre como JSON.