Java代码没有捕获错误?(初学者)
这就是我所拥有的:Java代码没有捕获错误?(初学者),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(St
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
子句抛出扩展的Throwable
,但不抛出异常。因此,您的捕获(异常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;
}
assert
子句抛出扩展的Throwable
,但不抛出异常。因此,您的捕获(异常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;
}
Assert抛出一个错误,这不是异常 试试这个:
...
catch (Throwable e)
或仅捕获断言失败:
catch (AssertionError e)
Assert抛出一个错误,这不是异常 试试这个:
...
catch (Throwable e)
或仅捕获断言失败:
catch (AssertionError e)
assert
抛出的不是的子类,而是的子类。assert
抛出的不是的子类,而是的子类。运行代码时会发生什么?请注意,assert
是作为调试工具供开发人员使用的。它不应用作执行控制。我强烈建议您改用if
语句。运行代码时会发生什么?请注意assert
是供开发人员作为调试工具使用的。它不应用作执行控制。我强烈建议您使用if
语句。谢谢。如果布尔变量为false,如何抛出自定义异常(我创建的)?不知道如何使用常规的try/catch块执行此操作。异常不用于控制流。您使用一个if
语句,在本例中只需从该语句返回即可。谢谢。如果布尔变量为false,如何抛出自定义异常(我创建的)?不知道如何使用常规的try/catch块执行此操作。异常不用于控制流。使用if
语句,在本例中仅从该语句返回。