Last active
February 10, 2023 12:38
-
-
Save scovl/5d073632b9b4d858e83020933cdfcb64 to your computer and use it in GitHub Desktop.
throw new
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Você pode adicionar uma exceção personalizada criando uma nova classe que estenda Exception e capturá-la dentro do bloco de código que você deseja tratar. Por exemplo: | |
class NamespaceException extends Exception { | |
public NamespaceException(String message) { | |
super(message); | |
} | |
} | |
... | |
while ((stderr = stdError.readLine()) != null) { | |
Logger.info("Erro ao listar namespaces: ", stderr, stderr); | |
throw new NamespaceException("Erro ao listar namespaces"); | |
} | |
Em seguida, você pode capturar a exceção personalizada como mostrado abaixo: | |
try { | |
... | |
while ((stderr = stdError.readLine()) != null) { | |
Logger.info("Erro ao listar namespaces: ", stderr, stderr); | |
throw new NamespaceException("Erro ao listar namespaces"); | |
} | |
} catch (NamespaceException e) { | |
String msg = "Ocorreu um erro ao listar namespaces: " + e.getMessage(); | |
Logger.error(msg, e); | |
} | |
Para testar esse trecho de código utilizando o Mockito, você precisará criar um mock para o objeto BufferedReader chamado stdError, que representa o BufferedReader que está lendo o conteúdo do stream de erro. Em seguida, você pode usar o Mockito para definir o comportamento desse objeto mock, fazendo com que ele retorne uma string não nula quando o método readLine() é chamado. Além disso, você precisará capturar a exceção lançada pela instrução throw. | |
Aqui está um exemplo de como esse teste poderia ser escrito usando o Mockito: | |
import org.junit.Test; | |
import org.junit.runner.RunWith; | |
import org.mockito.Mock; | |
import org.mockito.junit.MockitoJUnitRunner; | |
import java.io.BufferedReader; | |
import static org.mockito.Mockito.when; | |
@RunWith(MockitoJUnitRunner.class) | |
public class Task1Test { | |
@Mock | |
private BufferedReader stdError; | |
@Test(expected = NamespaceException.class) | |
public void testListarNamespaces_error() throws Exception { | |
when(stdError.readLine()).thenReturn("error message"); | |
while ((stderr = stdError.readLine()) != null) { | |
Logger.info("Erro ao listar namespaces: ", stderr, stderr); | |
throw new NamespaceException("Erro ao listar namespaces"); | |
} | |
} | |
} | |
Para testar esse trecho de código utilizando o Mockito, você precisará criar um mock para o objeto BufferedReader chamado stdError, que representa o BufferedReader que está lendo o conteúdo do stream de erro. Em seguida, você pode usar o Mockito para definir o comportamento desse objeto mock, fazendo com que ele retorne uma string não nula quando o método readLine() é chamado. Além disso, você precisará capturar a exceção lançada pela instrução throw. | |
Aqui está um exemplo de como esse teste poderia ser escrito usando o Mockito: | |
import org.junit.Test; | |
import org.junit.runner.RunWith; | |
import org.mockito.Mock; | |
import org.mockito.junit.MockitoJUnitRunner; | |
import java.io.BufferedReader; | |
import static org.mockito.Mockito.when; | |
@RunWith(MockitoJUnitRunner.class) | |
public class Task1Test { | |
@Mock | |
private BufferedReader stdError; | |
@Test(expected = NamespaceException.class) | |
public void testListarNamespaces_error() throws Exception { | |
when(stdError.readLine()).thenReturn("error message"); | |
while ((stderr = stdError.readLine()) != null) { | |
Logger.info("Erro ao listar namespaces: ", stderr, stderr); | |
throw new NamespaceException("Erro ao listar namespaces"); | |
} | |
} | |
} | |
Nesse exemplo, estamos utilizando a anotação @RunWith(MockitoJUnitRunner.class) para dizer ao JUnit que deve usar o Mockito como o executor de teste. Além disso, estamos usando a anotação @Mock para dizer ao Mockito que precisamos criar um mock para a variável stdError. Em seguida, no método de teste testListarNamespaces_error, estamos definindo o comportamento do objeto mock para retornar "error message" quando o método readLine() é chamado. Finalmente, estamos usando a anotação @Test(expected = NamespaceException.class) para indicar que esperamos que a exceção NamespaceException seja lançada durante a execução desse teste. | |
O HTTP response error mais adequado para um RuntimeException é o status 500 Internal Server Error. Este status indica que o servidor encontrou uma condição inesperada e não pôde concluir a requisição do cliente. Ele geralmente é usado para indicar erros no lado do servidor, como exceções de runtime, erros de banco de dados ou erros de programação. Além disso, a mensagem de resposta inclui uma descrição genérica do erro, mas não fornece detalhes específicos sobre a causa da falha. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment