Java 错误消息抛出不一致,原因未知。希望所有错误消息消失吗

Java 错误消息抛出不一致,原因未知。希望所有错误消息消失吗,java,eclipse,Java,Eclipse,对于一个学校项目,我制作了一个程序,从文件中读取输入,并构造一个条形图来表示输入中的一些数据。逐行读取输入,并为每行更新条形图。对于已读取的每一行(“行%d\n”,行号)都会打印到控制台。所有这些功能都已经实现,并且能够正常工作。但是,程序会向控制台抛出异常,我希望它们消失。以下是控制台的摘录: line 1 line 2 line 3 Exception in thread "AWT-EventQueue-0" line 4 line 5 java.lang.IllegalArgumentEx

对于一个学校项目,我制作了一个程序,从文件中读取输入,并构造一个条形图来表示输入中的一些数据。逐行读取输入,并为每行更新条形图。对于已读取的每一行(“行%d\n”,行号)都会打印到控制台。所有这些功能都已经实现,并且能够正常工作。但是,程序会向控制台抛出异常,我希望它们消失。以下是控制台的摘录:

line 1
line 2
line 3
Exception in thread "AWT-EventQueue-0" line 4
line 5
java.lang.IllegalArgumentException: Color parameter outside of expected range: Red
at java.awt.Color.testColorValueRange(Color.java:310)
at java.awt.Color.<init>(Color.java:395)
at java.awt.Color.<init>(Color.java:369)
at ui.staafdiagram.StaafDiagramPanel.berekenKleur(StaafDiagramPanel.java:62)
at ui.staafdiagram.StaafDiagramPanel.tekenStaaf(StaafDiagramPanel.java:106)
at ui.staafdiagram.StaafDiagramPanel.paintComponent(StaafDiagramPanel.java:162)
at javax.swing.JComponent.paint(JComponent.java:1045)
at javax.swing.JComponent.paintChildren(JComponent.java:878)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintChildren(JComponent.java:878)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5219)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1236)
at javax.swing.JComponent.paint(JComponent.java:1031)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.awt.Container.paint(Container.java:1967)
line    at java.awt.Window.paint(Window.java:3877)
at javax.swing.RepaintManager$3.run(RepaintManager.java:807)
at javax.swing.RepaintManager$3.run(RepaintManager.java:784)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
at javax.swing.RepaintManager.access$1000(RepaintManager.java:62)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1651)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)6
    //more errors....   PS Note the '6' at the end of this block of code. Error message thrown from within out.printf("line %d\n", lineNumber)?
以下是我的代码摘录:

private void processInput() {

    Scanner input;
    Scanner lineScanner = null; // initialization

    String line;
    input = new Scanner(System.in);
    int lineNumber = 0;
    while (input.hasNextLine()) {
        lineNumber++;
        out.printf("line %d\n", lineNumber);

        line = input.nextLine();
        lineScanner = new Scanner(line);
        if (line.length() < MIN_OK_LINE_LENGTH)
            continue;
        incrementBar(gameResult(lineScanner));
        barChart.showChanges();
    }
    input.close();
    lineScanner.close();
}
private void processInput(){
扫描仪输入;
Scanner lineScanner=null;//初始化
弦线;
输入=新扫描仪(System.in);
int lineNumber=0;
while(input.hasNextLine()){
lineNumber++;
out.printf(“行%d\n”,行号);
line=input.nextLine();
lineScanner=新扫描仪(行);
if(line.length()

如果请求,将发布更多控制台错误和程序代码。我的程序使用大学java库中的方法,任何非英语的错误消息都源于我不熟悉的代码中的方法

错误消息表明调用java.awt.Color构造函数时,红色组件的值超出范围。查看javadoc中的颜色,我们看到红色是一个8位值,即介于0-255之间。在代码中查找表示颜色的内容,并发现为什么它有时会给出(至少)红色超出此范围的颜色。如果有东西正在读取数据,或者随机生成颜色值,那么这就解释了为什么它不会在一致的时间发生


请注意,该值可能是int或float——同样,查看颜色的不同构造函数将告诉您预期的结果。我们不知道绿色和蓝色的颜色是否有效,只是红色无效。

错误消息表明调用java.awt.Color构造函数时,红色组件的值超出范围。查看javadoc中的颜色,我们看到红色是一个8位值,即介于0-255之间。在代码中查找表示颜色的内容,并发现为什么它有时会给出(至少)红色超出此范围的颜色。如果有东西正在读取数据,或者随机生成颜色值,那么这就解释了为什么它不会在一致的时间发生


请注意,该值可能是int或float——同样,查看颜色的不同构造函数将告诉您预期的结果。我们不知道绿色和蓝色的颜色是有效的,只是红色是无效的。

首先,我同意其他答案:您应该找到错误,修复它,并将错误修复发送给库维护人员/作者。你甚至可能从你的教授那里得到额外的学分,你永远不知道。在这种情况下,在
ui.staafdiagram.StaafDiagramPanel
中的某个地方分配了错误的颜色值(不在0-255范围内)

如果忽略抛出的未经检查的异常,您永远不知道程序的哪些部分可能会中断,真的什么都可能发生

然而,也许你有一个演示即将到来,不能及时找到错误。异常通常打印到stderr,因此您可以完全忽略stderr的输出:

System.setErr(new PrintStream(new OutputStream() {
    public void write(int b) throws IOException {
        //nothing
    }
}));
throw new RuntimeException("test"); //this should not be printed, ever.

请记住,这将吞噬所有异常,您的程序可能会在没有警告和打印原因的情况下失败。

首先,我同意其他答案:您应该找到错误,修复它,并将错误修复发送给库维护人员/作者。你甚至可能从你的教授那里得到额外的学分,你永远不知道。在这种情况下,在
ui.staafdiagram.StaafDiagramPanel
中的某个地方分配了错误的颜色值(不在0-255范围内)

如果忽略抛出的未经检查的异常,您永远不知道程序的哪些部分可能会中断,真的什么都可能发生

然而,也许你有一个演示即将到来,不能及时找到错误。异常通常打印到stderr,因此您可以完全忽略stderr的输出:

System.setErr(new PrintStream(new OutputStream() {
    public void write(int b) throws IOException {
        //nothing
    }
}));
throw new RuntimeException("test"); //this should not be printed, ever.

请记住,这将吞噬所有异常,并且您的程序可能会在没有警告和打印原因的情况下失败。

如果程序抛出异常,则说明有问题。调试程序以了解抛出异常的原因。那么ui.staafdiagram.StaafDiagramPanel.berekenKleur(StaafDiagramPanel.java:62)是什么样子的呢?如果程序抛出异常,则说明有问题。调试程序以了解抛出异常的原因。那么ui.staafdiagram.StaafDiagramPanel.berekenKleur(StaafDiagramPanel.java:62)是什么样子的?是的,我将“希望所有错误消失”重新解释为“希望找到并修复所有错误”。我认为仅仅“希望错误消失”是不现实的,希望OP不是希望魔术。是的,我将“希望所有错误消失”重新解释为“希望发现并修复所有错误”。我认为仅仅“希望错误消失”是不现实的,希望OP不希望魔术。