Java 在没有SysOut的情况下编写消息?

Java 在没有SysOut的情况下编写消息?,java,Java,在下面的程序中,如何在没有sysout的情况下编写消息。我是 引用(“必须设置类的属性messageProvider:”…) 代码是否有问题,或者核心Java是否遗漏了什么 public class StandardOutMessageRenderer implements MessageRenderer { private MessageProvider messageProvider; @Override public void r

在下面的程序中,如何在没有sysout的情况下编写消息。我是 引用(“必须设置类的属性messageProvider:”…) 代码是否有问题,或者核心Java是否遗漏了什么

 public class StandardOutMessageRenderer implements MessageRenderer
    {
        private MessageProvider messageProvider;

        @Override
        public void render() {
            if (messageProvider == null) {            
                throw new RuntimeException( "You must set the property messageProvider of class:" + 
                        StandardOutMessageRenderer.class.getName());
            }

            System.out.println(messageProvider.getMessage());
        }

        @Override    
        public void setMessageProvider(MessageProvider provider) {
            this.messageProvider = provider;
        }

        @Override
        public MessageProvider getMessageProvider() {
            return this.messageProvider;
        }

} 

使用您选择的日志框架。jre附带Java.util.logging。Log4j和logback非常流行。Slf4j提供了额外的抽象…

您所引用的异常。 异常具有try-catch机制。如果他们在代码中被捕获-他们在代码中工作

但是!如果他们没有被抓住,就会被扔得更高。你应该参考书中的例外章节:) 在它被主流媒体抓住后,程序崩溃了。但在此之前,它会将异常内的消息打印到默认输出。即默认输出流。 猜猜Java中默认的输出流是什么?system.err.println(exception.printStackTrace())。这与system.out.println类似

这并不是非常深刻和有见地,但要真正理解它是如何工作的,首先需要了解守护进程、流、异常和默认JVM行为


ps:若你们不知道异常是如何工作的,那个么现在读这本关于spring的书可能还为时过早

这不是一个与框架相关的查询。我指的那一行有什么解释吗。我从一本书中举了一个例子,我在那一行遇到了死胡同。那一行没有打印消息。你是在问如何更改代码以打印消息,而不是抛出异常?或者,您是否在询问即使未使用SysOut,抛出结果如何打印到控制台窗口?或者你到底在问什么?请格式化你的代码以便于人类阅读。正确的缩进有助于清晰。Andreas,我指的是(“您必须设置类的属性messageProvider:”…)。那部分代码。我是从pro spring 4的书中取的。没有sysout,怎么可能简单地写("你必须…仍然不知道你在问什么。下一个语句有一个
println
,所以如果你想打印,就写另一个print语句。你引用的行当前对给定的文本抛出一个异常,它不会打印任何内容,尽管文本可能是由处理异常的代码打印的。如果你不取消rstand异常,这是一个完全不同的问题,你应该阅读更多关于它们的内容,以及它们的好处。@Andreas我遗漏了异常处理的哪一部分?请告诉我,我将返回并引用。哦,这与异常有关。你能更清楚地说明异常处理的哪一部分有助于打印消息吗像这样吗?我知道异常处理,但即使在打印消息时,我也认为我们使用Sysout。也许在学习spring之前,您应该先熟悉Java的基本概念……我不能。至少在这里不能。解释异常处理如何处理未捕获的异常是本书中一个不可重复的重要章节已导入评论部分。请谷歌:)@ChristianFrommeyer我知道例外情况。即使在那个里,我们也使用SysOut来打印消息,对吗?不,我们使用保存的对输出流的引用,在其中我们传递异常的stackTrace。说真的,请阅读一章关于异常和Oracle文档的内容,该主题的评论部分太少了。