标签: checked-exceptions

获取 Mockito 异常:此方法的已检查异常无效

我有一个我正在尝试测试的方法

public List<User> getUsers(String state) {

        LOG.debug("Executing getUsers");

        LOG.info("Fetching users from " + state);
        List<User> users = null;
        try {
            users = userRepo.findByState(state);
            LOG.info("Fetched: " + mapper.writeValueAsString(users));
        }catch (Exception e) {
            LOG.info("Exception occurred while trying to fetch users");
            LOG.debug(e.toString());
            throw new GenericException("FETCH_REQUEST_ERR_002", e.getMessage(), "Error processing fetch request");
        }
        return users;
    }
Run Code Online (Sandbox Code Playgroud)

下面是我的测试代码:

@InjectMocks
    private DataFetchService dataFetchService;

    @Mock
    private UserRepository userRepository;

@Test
    public void getUsersTest_exception() {
        when(userRepository.findByState("Karnataka")).thenThrow(new Exception("Exception"));
        try {
            dataFetchService.getUsers("Karnataka");
        }catch (Exception e) {
            assertEquals("Exception", e.getMessage());
    }
    }
Run Code Online (Sandbox Code Playgroud)

下面是我的 UserRepository …

java junit mockito checked-exceptions

1
推荐指数
2
解决办法
8134
查看次数

在java中创建已检查的异常类

我对checked exception class在java中创建感到困惑.

许多文章都说可以创建自定义异常

class MyException extends Exception
{
  //constructor defined
}
Run Code Online (Sandbox Code Playgroud)

由于RuntimeException也是从Exception类继承的.

是否无法创建仅涵盖Checked Exceptions的类?

或者我需要指定已检查异常的列表

class MyException extends IOException
    {
      //constructor defined
    }
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,可能存在我会错过某些已检查异常的情况.

java exception checked-exceptions

0
推荐指数
1
解决办法
532
查看次数

是否可以在没有任何 athrow 指令的情况下隐式抛出已检查的异常?

在 Java 中,检查异常和未检查异常都可以显式抛出,即通过throw语句抛出。此外,未经检查的异常如ArithmeticExceptionOutOfMemoryError可以在没有任何显式throw声明的情况下触发,如下所示:

public static void throwArithmeticException() {
    int i = 1;
    int j = i / 0;
}

public static void throwOutOfMemoryError() {
    List<Object> list = new ArrayList<>();
    while(true) {
        list.add(new Object());
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,有没有什么方法可以触发检查的异常,例如IOException隐式,即不使用任何throw语句?

java exception checked-exceptions unchecked-exception

0
推荐指数
1
解决办法
68
查看次数

为什么我们需要在 Java 中处理或抛出检查异常?

我是Java新手,我读到仅在编译时引发检查异常,即如果存在未处理或抛出的检查异常,程序将无法成功编译。如果有什么东西阻止编译器编译代码,那么我们可以删除它或以其他方式重新编码,这样问题就不会存在。

例如,如果我们试图打开系统中不存在的文件,我们不应该只是打开它。那么为什么需要处理/抛出这些异常呢?

java exception checked-exceptions

-1
推荐指数
1
解决办法
1209
查看次数