这就是我所拥有的:
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标识为包含四个允许的字符以外的字符?
谢谢。
最佳答案
assert
子句引发AssertionError
扩展Throwable
而不是Exception
。因此,您的catch (Exception e)
被跳过了。但是,不要试图抓住AssertionError
或Throwable
。
必须使用-ea
显式启用断言。不要依赖它们的存在,否则您的程序将根据无法控制的JVM参数而有所不同。
最后,不要在期望发生某些事情的异常情况下使用(控制程序流)。
而是尝试以下方法:
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 - Java代码未捕获错误? (初学者),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14927085/