15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

"""Base-class for weight calculation errors."""

class VolumeError(Error):

"""Base-class for volume calculation errors."""

class DensityError(Error):

"""Base-class for density calculation errors."""

Exceções específicas devem herdar dessas exceções gerais. Cada exceção

intermediária atua como um tipo especial de exceção-raiz, o que facilita criar

níveis de isolamento entre código chamador e API baseados na funcionalidade

desejada. Isso é muito melhor que fazer os chamadores terem de processar de

uma só vez uma longa lista subclasses Exception específicas.

Lembre-se

• Definir exceções-raiz para seus módulos permite isolar da API os

consumidores de seu código.

• A captura de exceções-raiz pode ajudar a encontrar bugs no código chamador

que consome uma API.

• A captura da classe básica Exception do Python pode ajudar a encontrar bugs

na própria API.

• Exceções-raiz intermediárias permitem adicionar mais tipos específicos de

exceções no futuro sem prejudicar o código dos consumidores da API.

Item 52: Saiba como romper dependências circulares

Inevitavelmente, quando colaboramos com outros programadores,

encontraremos uma interdependência mútua entre módulos. Isso pode até mesmo

ocorrer quando trabalhamos sozinhos em um programa muito grande, dividido

em inúmeras partes.

Por exemplo, digamos que se queira uma aplicação com interface gráfica (GUI)

que mostre uma caixa de diálogo para que o usuário escolha onde salvar um

documento. Os dados mostrados pela caixa devem ser especificados por meio de

argumentos em seus manipuladores de evento (event handlers). Porém, o diálogo

também precisa ler o estado global do programa para obter coisas como

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!