Java代码未捕获错误

Java代码未捕获错误

这就是我所拥有的:

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)被跳过了。但是,不要试图抓住AssertionErrorThrowable
必须使用-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/

10-11 09:21