2. Tratamento de exceptions
Para tratar as exceções do código, é usado o bloco try/catch. No bloco
try é onde se coloca o trecho de código que pode conter uma
exceção, e no bloco catch é indicado qual a exceção que será tratada,
podendo ser exibida uma mensagem ou onde o erro está localizado.
Existem dois tipos de exceções:
● Checked exceptions: que são as exceções que o compilador
reconhece no momento de escrita (Exception);
● Unchecked exceptions: que são apresentadas somente no
momento de execução (RuntimeException).
Exemplo:
https://github.com/pedrohubner/shoppingcart/blob/master/src/main/java/com/app/thread/Cart
Thread.java
6. Mutabilidade
Qualquer classe, atributo ou método em que seja possível mudar seu valor é
mutável, porém, isso pode ser um risco à segurança da aplicação, na
possibilidade de alterar algum valor que comprometa o desempenho do produto.
Para evitar isso, se usa a imutabilidade nos objetos java, aplicando a palavra final
aos atributos da classe, não criando métodos setter, tornando todos os elementos
da classe como private.
Aplicar a imutabilidade aos projetos traz muitos benefícios, entre eles:
● evita às modificações indesejadas nos elementos da aplicação;
● não concorrência de threads, por conta de não poder atribuir novos valores
aos recursos.
7. Copy
Utilizando o método clone(), e implementando a interface Cloneable, é
possível clonar um objeto, copiando todos os seus campos.
Existem dois tipos de cópias: deepcopy e shallowcopy.
Deepcopy: quando o endereço
de memória do objeto também
é clonado, não só o objeto.
Ou seja, qualquer alteração
feita na cópia, não refletirá no
objeto original.
Shallowcopy: o objeto é
clonado e a cópia aponta para
o mesmo endereço de
memória do original, o que faz
com que qualquer alteração
reflita nas duas variáveis.