1.throw 和 throws的总结
throws 时在声明方法的时候该方法要抛出异常 形式如下public static void testException()throws Exception
throw是抛出异常对象 程序会在throw语句后立即终止,它后面的语句执行不到 如 throw new RuntimeException();
2.try catch块
try {} catch (Exception e) {}finally{} 当成出现异常的时候会进入catch块中,无论是否有异常 都将执行fianlly
代码块
必须在 try 之后添加 catch 或 finally 块。try 块后可同时接 catch 和 finally 块,但至少有一个块。
当含有多个catch块时 一旦某个catch捕获到匹配的异常类型,将进入异常处理代码。一经处理结束,就意味着整个try-catch语句结
束。其他的catch子句不再有匹配和捕获异常类型的机会.
3.finally代码块
无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。 当finally中含有return语句时,则方法立即结束,不会执行try catch块中的return 或 throw 语句
在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU
4.自定义异常信息
继承Exception
class MyException extends Exception { // 创建自定义异常类
String message; // 定义String类型变量
public MyException(String ErrorMessagr) { // 父类方法
message = ErrorMessagr;
}
public String getMessage() { // 覆盖getMessage()方法
return message;
}
}
4.问题总结
1.)代码:
public classTest {
public static void main(String[] args) {
System.out.println(newTest().test());
}
static int test()
{
int x = 1;
try
{
return x;
}
finally
{
++x;
}
}
}
分析:return x 应该分开来看 , 在执行return之前 x的值已经返回给了主函数,而return的只是结束当前函数