相关疑难解决方法(0)

为什么尝试{...}最终{...}好; 试试{}}抓住{}不好?

我见过有人说使用不带参数的catch是不好的形式,特别是如果catch没有做任何事情:

StreamReader reader=new  StreamReader("myfile.txt");
try
{
  int i = 5 / 0;
}
catch   // No args, so it will catch any exception
{}
reader.Close();
Run Code Online (Sandbox Code Playgroud)

但是,这被认为是好的形式:

StreamReader reader=new  StreamReader("myfile.txt");
try
{
  int i = 5 / 0;
}
finally   // Will execute despite any exception
{
  reader.Close();
}
Run Code Online (Sandbox Code Playgroud)

据我所知,将清理代码放在finally块中并在try..catch块之后放置清理代码之间的唯一区别是,如果你的try块中有return语句(在这种情况下,最后清理代码将是运行,但try..catch之后的代码不会).

否则,最后有什么特别之处?

.net c# exception-handling try-catch try-catch-finally

196
推荐指数
7
解决办法
9万
查看次数

在不创建文件的情况下测试outputstream.write(<String>)

我正在测试java中的输出流,如下所示.

    Writer outputStream = getOutputStream(fileName);
    if(outputStream != null) {
        try {
            outputStream.write(inputText);
        }
        finally {
            outputStream.close();
        }
    }
    else {
        throw new IOException("Output stream is null");
    }
Run Code Online (Sandbox Code Playgroud)

我正在写一个mockito测试,如下所示

public void testFileWrite() throws IOException {
    when(testObj.getOutputStream(outputFileNameValidValue)).thenReturn(outputStreamMock);
    doNothing().when(outputStreamMock).write(Matchers.anyString());
    doNothing().when(bufferedReaderMock).close();

    testObj.write(outputFileNameValidValue, reveredFileInput);

    verify(outputStreamMock).write(Matchers.anyString());
    verify(outputStreamMock).close();
}
Run Code Online (Sandbox Code Playgroud)

问题是在创建OutputStreamWriter(new FileOutputStream(filename))磁盘上创建物理文件时.

我们可以测试Outputstream.write而不实际在磁盘上写文件吗?

谢谢阿南德

java testing tdd mockito

11
推荐指数
1
解决办法
1万
查看次数

什么时候使用最后尝试而不是最后尝试

使用Try Catch Final块的最佳实践是什么?您更喜欢只使用try finally块而不尝试catch块吗?我一直以为最终尝试捕获是最佳的使用方法。但是,在我正在使用的部分代码中,我看到了这样的代码:

试试{doSomething(); }最后{doSomethingElse(); }

由于他们没有捕获到异常,因此我很难调试代码。对我而言,不使用catch而是仅在最后使用,这不是一个很好的习惯,但是我可能错了。

据我所知,这实际上不是一个好习惯。基本上,我们没有利用尝试捕获的意图。我也发现了类似的问题

我的问题是:“在以下假设上您是否同意我的观点:最佳实践是一起尝试最后捕获而不是最终尝试。” 如果您不同意,请您提供一个示例,说明何时使用try try而不是try catch,为什么您认为try try优于try catch?

java exception try-catch

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