簡體   English   中英

訪問程序消息輸出到錯誤流

[英]Accessing program messages output to error stream

我創建了一個處理文件的類,如果遇到某些特定的錯誤,它將向錯誤流輸出相關的錯誤消息。

我正在另一個需要訪問這些錯誤消息的類上工作。 我不確定該怎么做。 我是Java編程的初學者。 基於我的有限知識,我認為我的兩個選擇是調用第一個類的main方法(但在這種情況下我不知道如何獲取錯誤消息)或執行已編譯的類並進行訪問通過Process類的getErrorStream()方法獲取消息。 但是,我在系統死鎖方面遇到麻煩,甚至可能無法執行exec命令,因此我也不確定如何實現第二種情況。

我不太確定您在這里要問什么,但是代碼的潛在問題是您沒有從流程的標准輸出中讀取內容。 根據Process API ,“未能及時...讀取子流程的輸出流可能導致子流程阻塞,甚至死鎖。” 這是您提到的“麻煩”嗎?

編輯:是的,您可以做您正在做的事情,但是請確保同時讀取錯誤流和輸出流(請參閱我的評論),或者您可以直接從代碼中直接調用main方法,在這種情況下錯誤輸出將被寫入System.err 您可以使用System.setErr()安裝自己的流,該流將讓您獲取寫入的流,但是請記住,您自己的應用(運行另一個應用的應用)輸出的任何錯誤也會顯示這里。 聽起來像是要生成一個單獨的過程,就像您已經在做的一樣。

您不能使用主要方法基於許多小程序來構建模塊化。 您必須將功能塊作為可以從其他地方調用的類,這意味着以某種編程方式返回狀態信息,而不僅僅是將其拖到System.err上。 如果確實是錯誤 ,請拋出異常。 如果必須返回狀態,請設計一個數據結構來保存狀態並返回它。 但是不要到處啟動新進程並讀取它們的錯誤流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM