在没有SysOut的情况下撰写邮件?

时间:2016-05-22 12:36:52

标签: java

在下面的程序中,如何在没有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;
        }

} 

2 个答案:

答案 0 :(得分:2)

您正在引用例外。 例外有try-catch机制。如果他们在代码中被捕获 - 他们会在代码中使用它们。

但是!如果他们没有被抓住,他们会被抛到更高的位置。你应该参考你书中的例外章节:) 在受到主流影响之后,程序崩溃了。但在此之前,它会在异常中将消息打印到默认输出。即默认输出流。 并猜测Java中默认的默认输出流是什么?通信System.err.println(exception.printStackTrace())。这类似于system.out.println ...

这不是很深刻和富有洞察力,但要真正理解它是如何工作的,首先需要了解守护进程,流,异常和默认的JVM行为。

ps:如果你不知道例外是如何运作的,那么在春天阅读这本书可能为时尚早

答案 1 :(得分:0)

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