【问题标题】:How to catch and ignore IncompatibleType Error in Java如何在 Java 中捕获和忽略 IncompatibleType 错误
【发布时间】:2017-10-06 01:01:48
【问题描述】:

我已经搜索了大约 2 个小时,但找不到在 Java 中捕获和忽略不兼容类型错误的方法。这是由于尝试将浮点值分配给整数而导致的编译时错误。我知道为什么会发生此错误(狭窄的转换),并且特别希望发生此错误,因为它是为了演示错误本身(需要我参加的课程),但是在尝试使用 try-catch 捕获错误时声明我没有运气。

我知道你应该指定你要捕获的错误类型,但是为了这段代码的目的,如果我在这里采用通用路线是可以的,因为一切都很好地包含并且非常简单。我永远不会将这种错误检查用于比该项目的目的更复杂的事情,但是如果您知道确切的错误类型导致在尝试时显示消息“错误:不兼容的类型:可能有损从浮点数转换为整数”要编译,我将使用该错误类型。我浏览了多个站点,但找不到此错误的确切类型(例如 IOException)。

这是我要执行的代码:

import java.lang.*;
public class AssignTests {  

int integer = 10;
float floater = 1234.1234f;

public static void main(String[] args){ 
    AssignTests test = new AssignTests();

    try{
        test.integer = test.floater;
    }
    catch (Exception t)
    {
        System.out.println("An integer cannot be assigned the value of a float.");
    }
  }
}

当我去编译这段代码时,尽管尝试通过 try-catch 语句忽略这个问题,但我仍然看到不兼容类型的错误消息,并且在搜索了这么长时间之后如何解决这个问题我很困惑。

关于如何编译它并给我正在寻找的输出消息的任何想法?

【问题讨论】:

  • 编译错误不能使用try-catch
  • 你不能“捕捉”编译时错误——你可以修复它们。如果你想演示一些东西,也许从命令行运行编译器并显示错误输出?
  • 谢谢,这真的很有帮助!我以为它们会被“检查异常”所涵盖,但我一定错过了这一点。我想我必须找到解决此问题的另一种方法,感谢您提供的信息。

标签: java types compilation try-catch


【解决方案1】:

用这个代替正常的转换

test.integer = (int) test.floater;

【讨论】:

  • 我知道我可以进行类型转换,但我想表明它无法在没有转换的情况下分配值。基于早期的 cmets,看来我必须从另一个角度来解决这个问题。谢谢!
【解决方案2】:

您不能try-catch 编译错误。

不兼容的error: incompatible types: possible lossy conversion from 是编译时错误,因此如果没有类型转换或其他解决方法,这是一项不可能完成的任务。

感谢 PM 77-1 的回复(以 cmets 为单位),我想我会将其写为结束问题的答案。

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 2020-01-09
    • 2020-12-09
    • 2011-05-13
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    相关资源
    最近更新 更多