gpt4 book ai didi

Java 线程崩溃但 Swing 仍在工作

转载 作者:行者123 更新时间:2023-11-29 05:38:04 24 4
gpt4 key购买 nike

对于 XLSX 文件中的某些单元格,rt.getFontAtIndex(i) 部分只是崩溃,控制只是退出函数,甚至调用函数。 Out Swing windows 仍然是打开的。我不知道为什么没有任何异常控制会超出代码范围。

    public static String addLinkTagInRichTextForUnderscores(XSSFRichTextString rt) {
System.out.print("Was here 1\n");
if(rt.length()==0 || rt == null) {
return " ";
}
String outString = rt.toString();
//String finalString = "";
List<Integer> startIndexListOfUL = new ArrayList<Integer>();

boolean continuing = false;
System.out.println(outString +" A "+ rt.length() +"\n\n");

for(int i=1;i<rt.length();i++) {
System.out.print("Was here at font "+ i);
XSSFFont font = null;
try{
//font = rt.getFontAtIndex(i);
} catch(Error e){
e.fillInStackTrace();
}
System.out.print("Was here too" + rt.getFontAtIndex(i));
if(font!= null) {
if(XSSFFont.U_SINGLE == font.getUnderline()) {

if(!continuing){
startIndexListOfUL.add(new Integer(i));
continuing = true;
}

}else{
continuing = false;
}
} else {
//System.out.println("No font " + i);
}
}

System.out.println(startIndexListOfUL);

if(startIndexListOfUL.size()==0) {
//finalString = outString;
return " ";
} else {
int spacing = 0;
for(int i = 0; i<startIndexListOfUL.size(); i++) {
outString = insertStringAt(outString,startIndexListOfUL.get(i) + spacing,"<link>");
spacing = spacing + 6;
}
}

//just remove redundant <link> tags
outString = outString.replaceAll("(<link>[\\s]?<link>)", "<link>");
//System.out.println("Final >>>> " + outString);
return outString;
}

最佳答案

XSSFRichTextString.getFontAtIndex() 的文档说它将返回一个 XSSFFont,如果没有应用字体或索引超出范围则返回 null。因此您需要在使用它之前查看返回值是否为 null(包括在 System.out.print 调用中),否则您将获得 NullPointerException 并且控件将离开代码块。

此外,请注意,捕获错误不会有帮助 - NPE 是一个 RuntimeException,而不是错误的子类,因此无论如何都不会在您的 try/catch block 中被捕获。除了少数异常(exception)(没有双关语意),您应该在代码中进行适当的检查(确保返回的引用不为空,检查数组长度的索引等),而不是试图捕获未经检查的异常。

关于Java 线程崩溃但 Swing 仍在工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com