关于java:尝试输出文件的异常 – 如何将对象传递给catch块?

Trying to ouput exceptions to a file - how can I pass objects into catch block?

在这种情况下,我试图处理表中的一批行,并使用JXL将结果(成功或异常)输出到Excel电子表格中。问题是我看不到如何将启动的Excel工作簿传递到catch块,以便将异常打印到其中。下面是一些简单的代码,概述了我的程序的结构(忽略任何基本错误,我只是出于演示目的键入了这些代码):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static void main(String[] args) {
   try{
     WritableWorkbook exceptionWB=Workbook.createWorkbook(new File("filename.xls");
     WritableSheet excepSheet=exceptionWB.createSheet("Exceptions",0);
     int exceptionRow=1;

     for(int i=0; i<numberOfRecords;i++){
          processRow(argument1, argument2, excepSheet, exceptionRow);
          }
   catch (Exception e){
          Label exception1=new Label(0, exceptionRow, e.getMessage());
          exceptionWB.write();
    }
}

public void processRow(String arg1, String arg2, WritableSheet sheet, int row){
    try{
      // A load of operations here
    } catch(Exception e) {
          Label exception1=new Label(0, exceptionRow, e.getMessage());
          exceptionWB.write();
    }
}

我知道catch块没有访问工作表的权限,因为它不在范围内,但是如果我将工作簿的初始化移出try块,它会返回一个错误,因为它周围没有异常处理。

是否有一种方法可以将此工作簿/工作表传递给各个catch块,或者我应该一起研究一个完全不同的解决方案?

谢谢


定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args) {
    WritableWorkbook exceptionWB = null;
    try{
        exceptionWB = Workbook.createWorkbook(new File("filename.xls");
        WritableSheet excepSheet=exceptionWB.createSheet("Exceptions",0);
        int exceptionRow=1;

        for(int i=0; i<numberOfRecords;i++) {
            processRow(argument1, argument2, excepSheet, exceptionRow);
        }
        catch (Exception e) {
            //You should now have access to the exceptionWB
            Label exception1=new Label(0, exceptionRow, e.getMessage());
            exceptionWB.write();
        }
}