java - 如何更改Exception.getMessage()的返回消息?

标签 java exception

我需要更改方法 getMessage() 的返回消息,
例如,我有一个 ArithmeticException,当我写时:

try{c=a/0;}
catch(ArithmeticException excep){System.out.println( excep.getMessage() );}

然后我执行以下代码:/by zero

因此,我想通过覆盖 getMesage 方法来更改此结果。
我创建了一个名为 MyException新类,它继承自 ArithmeticExceprtion 并重写了方法 getMessage,然后我已将上一个代码中的异常类型从 ArithmeticException 更改为新名称类 MyException:

public class MyException extends ArithmeticException{
    @override
    public String getMessage(){
        retun "new code message";}
}

我已经更改了第一个代码,我写了:

try{c=a/0;}
catch(MyException excep){System.out.println( excep.getMessage() );}

当我执行此代码时,我收到了相同的错误消息,就好像我没有捕获异常一样:

 Exception in thread "main" java.lang.ArithmeticException: / by zero
         at main.test.main(Test.java:33)

所以,我的问题是:如何更改方法 getMessage() 的消息?

最佳答案

c=a/0 总是抛出 ArithmeticException 因为它是这样实现的。

如果您编写自己的除法函数,该函数在除以 0 时抛出 MyException 那么您实际上可以捕获它:

float division(float a, float b) {
    if(b == 0)
        throw new MyException();
    return a/b;
}

...
try {
    c = division(a, b);
} catch(MyException e) {
    System.out.println(e.getMessage());
}

关于java - 如何更改Exception.getMessage()的返回消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26807684/

相关文章:

java - 在 Objectify 中计算实体的排名

bash - 了解bash信号处理

python - 定义镜像内置异常格式的自定义 Python 异常

java - Java 中的自动委托(delegate)

java - 是否可以将 Swing 移植到 .Net 世界中?

java - Spring Boot 2.4.2 - Redisson 客户端 - 启动时的 DNS 解析问题

java - JBoss Resteasy 服务中罕见的 ConcurrentModificationException

c# - 使用多层 MVVM 处理 TreeView 中的数据库事务和异常

asp.net-mvc - 我在 MVC2 中的图像和 robots.txt 上收到 "Does not implement IController"错误

.net - 为什么对不存在的键进行大量的AppSettings调用会导致应用程序崩溃?