gpt4 book ai didi

Java 代码没有捕获错误? (初学者)

转载 作者:行者123 更新时间:2023-12-01 17:26:02 25 4
gpt4 key购买 nike

这就是我所拥有的:

public class A1tester {
static String dna = "GCTTTA";
static String dna1 = "GCTAAAAAD";

public static void main(String[] args) {
validChars(dna);
validChars(dna1);
}

private static boolean validChars(String dna) {
try {
for (char c: dna.toCharArray()) {
assert ((c == 'C') || (c == 'G') || (c == 'T') || (c == 'A'));
}
} catch (Exception e) {
System.out.println("Exception caught!");
return false;
}

System.out.println("DNA has only the permitted letters");
return true;
}

}

我错过了什么,导致我的 validChars() 方法无法将 dna1 识别为包含四个允许的字符以外的字符?

谢谢。

最佳答案

  1. assert 子句抛出 AssertionError扩展Throwable,但不扩展Exception。因此您的 catch (Exception e) 被跳过。但是,不要试图捕获 AssertionErrorThrowable

  2. 必须使用 -ea 显式启用断言。不要依赖它们的存在,否则您的程序将根据您无法控制的 JVM 参数而表现不同。

  3. 最后,不要在您期望发生某些事情的地方使用异常(以控制程序流程)。

试试这个:

private static boolean validChars(String dna) {
for (char c: dna.toCharArray()) {
if((c != 'C') && (c != 'G') && (c != 'T') && (c != 'A')) {
return false;
}
}
return true;
}

关于Java 代码没有捕获错误? (初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14927085/

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