相关疑难解决方法(0)

为什么捕获Throwables时会捕获Java中的异常?

我们最近遇到了一个Java服务器应用程序的问题,其中应用程序抛出了未捕获的错误,因为Error是Throwable的一个单独的子类,我们只捕获异常.

我们通过捕获Throwables而不是Exceptions解决了当前的问题,但是这让我想到为什么你想要捕获Exceptions而不是Throwables,因为你会错过错误.

所以,当你能捕获Throwables时,你为什么要捕捉异常呢?

java

64
推荐指数
5
解决办法
2万
查看次数

什么时候应该使用Throwable而不是新的Exception?

鉴于:ThrowableException超级.

当我编写自己的"例外"读课文,我看到的例子Throwable中所使用catch的块和其他经文显示new Exception() 在正在使用catch块.我还没有看到何时应该使用每个的解释.

我的问题是,什么时候应该Throwable使用,什么时候应该new Exception()使用?

使用以下任一内部catchelse块内:

throw throwable;
Run Code Online (Sandbox Code Playgroud)

要么

throw new Exception();
Run Code Online (Sandbox Code Playgroud)

java exception throwable

41
推荐指数
4
解决办法
9万
查看次数

与Java中的Exception vs Throwable相关联的开销

我知道

throw new Exception();
Run Code Online (Sandbox Code Playgroud)

有一个相当大的开销,因为它创建了一个完整的堆栈跟踪等
是否

throw new Throwable();
Run Code Online (Sandbox Code Playgroud)

出现同样的问题?这种行为是继承的,还是抛出Throwable有一个较小的(o no)开销?

编辑
分析师的角度来看,插入错误密码的用户是程序正常执行顺序的例外.所以,如果我有:

public Session newSession() {  
  validate_user_and_password();   
}
Run Code Online (Sandbox Code Playgroud)

分析师的角度来看,抛出UserNotValidException听起来是正确的.如果您的代码具有相当好的抽象,则
返回null或者0听起来不正确.我只是想知道我是否可以在代码中实现这一点,或者如果我不得不将它留给理论.

编程视点异常与分析师视点异常之间存在很大差异.

注意:我给出了一个非常简单而愚蠢的例子,这不是我的情况.
注2:我知道返回null将是普通的事情,但我需要有适当的抽象和OO代码,而且,就个人而言,我认为没有任何损害.

java exception throwable

27
推荐指数
2
解决办法
5万
查看次数

如何在java中将错误日志或异常写入文件

有没有办法在java中的文件中写入错误日志或异常.我经历过Log4j.我搜索了一下,但diidnt找到了一个很好的解决方案.我写了一个简单的代码

catch (Exception e) {
    PrintWriter pw = new PrintWriter(new FileOutputStream("Log"));     
    e.printStackTrace(pw);
} 
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来记录错误或异常?任何机构可以提供我与Log4j的示例?

java log4j error-log

15
推荐指数
3
解决办法
13万
查看次数

Java - TestNG:为什么我的Assertion总是在try-catch块中写入时通过

我正在尝试使用一个简单的代码org.testng.Assert来断言2个用例.在第一个用例中,我Fail正确地声明了2个不相等的值.

但是在第二个用例中,当我在try-catch块中断言2个不相等的值时,结果总是返回为 Pass

我的代码如下:

package demo;
import org.testng.Assert;
import org.testng.annotations.Test;
public class Q43710035 
{

    @Test
    public void test1() 
    {
        System.out.println("Within test1");
        int a = 12;
        int b =20;
        Assert.assertEquals(a, b);

    }

    @Test
    public void test2() 
    {
        System.out.println("Within test2");
        int a = 12;
        int b =20;

        try 
        {
            Assert.assertEquals(a, b);
        }catch(Throwable t)
        {
            System.out.println("Exception Occurred");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

Within test1
Within test2
Exception Occurred
PASSED: test2
FAILED: test1
java.lang.AssertionError: expected [20] but found [12]
at org.testng.Assert.fail(Assert.java:94) …
Run Code Online (Sandbox Code Playgroud)

java testng exception-handling try-catch assertions

8
推荐指数
2
解决办法
2826
查看次数

为什么vavr的Try容器捕获Throwable却捕获不到Exception?

我不是java类型系统和异常处理方面的专家。但我发现我们应该只捕获异常而不是可抛出的异常。

这是链接: Difference Between using Throwable and Exception in a try catch

在 Vavr 的库中我找到了这个源代码:

public interface Try<T> extends Value<T>, Serializable {
    long serialVersionUID = 1L;

    static <T> Try<T> of(CheckedFunction0<? extends T> supplier) {
        Objects.requireNonNull(supplier, "supplier is null");

        try {
            return new Try.Success(supplier.apply());
        } catch (Throwable var2) {
            return new Try.Failure(var2);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我将来使用这个容器,会有什么问题吗?我会错过执行“of”函数期间可能发生的一些关键异常吗?

java exception vavr

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