java中如何执行本地程序并捕获out和err输出

博客涉及Java相关内容,包含import、null、string、class等元素,还提及了测试方面。
前些天机房中了病毒,jcreator坏了,editplus也用不起来那时只好用批处理给学生上课,想自己写个简单点的编译方式终于知道如何捕获输出了,学期也结束了:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* Created on 2004-5-23
* @author yuchifang
* 测试如何执行本地程序并捕获out和err输出
*/
public class TestInOutErr
{
  public static void main(String[] args) throws IOException
  {
    Process p = Runtime.getRuntime().exec("java test");
    BufferedReader in =
              new BufferedReader(
                    new InputStreamReader(p.getInputStream()));
    String currentLine = null;
    while ((currentLine = in.readLine()) != null)
      System.out.println(currentLine);
    BufferedReader err =
              new BufferedReader(
                    new InputStreamReader(p.getErrorStream()));
    while ((currentLine = err.readLine()) != null)
      System.out.println(currentLine);
  }
}

### Java 异常处理与输入输出流的最佳实践 在 Java 编程中,异常处理输入输出流是两个非常重要的主题。以下将详细介绍这两部分内容,并提供一些最佳实践。 #### 1. 异常处理机制 Java 的异常处理机制通过 `try-catch-finally` 结构实现,用于捕获处理程序运行时可能发生的错误。异常分为两大类:检查型异常(Checked Exception)非检查型异常(Unchecked Exception)。检查型异常必须在代码中显式处理,而非检查型异常通常由程序逻辑错误引起[^1]。 - **try 块**:包含可能抛出异常的代码。 - **catch 块**:用于捕获并处理特定类型的异常。 - **finally 块**:无论是否发生异常,都会执行的代码块,通常用于释放资源。 示例代码如下: ```java try { // 可能抛出异常的代码 int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("捕获到算术异常: " + e.getMessage()); } finally { System.out.println("finally 块总是会被执行"); } ``` #### 2. 输入输出流(I/O Streams) Java 提供了丰富的 I/O 流类库来处理文件、网络等数据源的读写操作。常见的流类型包括字节流(如 `FileInputStream` `FileOutputStream`)字符流(如 `FileReader` `FileWriter`)[^3]。 - **字节流**:适用于处理二进制数据。 - **字符流**:适用于处理文本数据,自动完成字符编码转换。 示例代码展示如何使用文件输入输出流: ```java import java.io.*; public class IOExample { public static void main(String[] args) { File file = new File("example.txt"); try (FileWriter writer = new FileWriter(file)) { writer.write("Hello, World!"); } catch (IOException e) { System.err.println("写入文件时发生错误: " + e.getMessage()); } try (FileReader reader = new FileReader(file)) { int content; while ((content = reader.read()) != -1) { System.out.print((char) content); } } catch (IOException e) { System.err.println("读取文件时发生错误: " + e.getMessage()); } } } ``` #### 3. 最佳实践 - **明确异常类型**:尽量捕获具体的异常类型,而不是使用通用的 `Exception` 类[^2]。 - **避免空 catch 块**:确保每个 catch 块都有适当的处理逻辑,记录日志或通知用户。 - **资源管理**:使用 try-with-resources 语法自动关闭资源,减少内存泄漏风险。 - **异常链**:在自定义异常中保留原始异常信息,便于调试定位问题。 #### 总结 通过合理设计异常处理逻辑正确使用输入输出流,可以显著提高 Java 程序的健壮性可维护性。遵循上述最佳实践,能够有效应对各种异常情况,确保程序稳定运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值