Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应对子字符串越界异常的最佳方法_Java_String_Exception - Fatal编程技术网

Java 应对子字符串越界异常的最佳方法

Java 应对子字符串越界异常的最佳方法,java,string,exception,Java,String,Exception,在解析HTML页面的internet内容时,由于HTML代码中的错误,一些字符不存在是很常见的,例如关闭“或>或其他内容。当解析器遇到这种情况时,有时会出现“越界异常”“。我正在考虑解决此问题的最佳方法-try\catch很好,但速度足够慢。一系列的if/else可能会更好,但您是否知道一些允许跳过这种异常情况的机制 您始终可以使用if-else链,一次测试每个必要的字符。一个while循环可能也可以用来实现这一点。这是我所知道的最好的两个 要测试是否存在带有字符串的字符,请使用以下测试 int

在解析HTML页面的internet内容时,由于HTML代码中的错误,一些字符不存在是很常见的,例如关闭“或>或其他内容。当解析器遇到这种情况时,有时会出现“越界异常”“。我正在考虑解决此问题的最佳方法-try\catch很好,但速度足够慢。一系列的if/else可能会更好,但您是否知道一些允许跳过这种异常情况的机制

您始终可以使用
if-else
链,一次测试每个必要的字符。一个while循环可能也可以用来实现这一点。这是我所知道的最好的两个

要测试是否存在带有字符串的字符,请使用以下测试

int exists = s.indexOf('<'); //Or any char
int close = s.lastIndexOf('>'); //Or other pair of char

if (exists != -1 && close != -1) { //Could be modified depending on the situation
    //Perform logic
}

try\catch很好,但不够慢,我不太同意。jdk代码在内部检查某些条件(使用
if
else
)并抛出这些错误/exception@sanbhat我想他指的是异常抛出的缓慢性——抛出异常本身就很昂贵。是的,RB——你是对的。那么,你想如何处理无效的页面?不抛出错误?那么你将如何解析它呢?我认为最好的方法就是跳过这一页——这是最快的变体
int exists = s.indexOf('"'); 
int close = s.lastIndexOf('"');

if (exists != close || (exists != -1 && close != -1) {
    //Perform logic
}