1.处理异常
try-catch以及try-catch-finally捕获异常
try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}finally{
//进行善后工作,最重要执行的一段代码,例如关闭文件
}
抛出异常后,程序中执行,程序的控制权将被移交给catch块中的异常处理程序。
注意:要按照先小后大,先子类后父类编写catch块。
finally是在try和catch语句块在执行return之后返回调用者之前被执行的。
package com.imooc;
public class TryExceptionTest {
public static void main(String[] args) {
TryExceptionTest tct =new TryExceptionTest();
int result = tct.test();
System.out.println("test()方法执行完毕,返回值为:" + result);
int result2 = tct.test2();
System.out.println("test2执行完毕,返回值为:" + result2);
int result3 = tct.test3();
System.out.println("test3执行完毕,返回值为:" + result3);
}
public int test(){
int divider =10;
int result =100;
try{
while (divider > -1){
divider--;
result = result +100/divider;
}
return result;
}catch (Exception e) {
e.printStackTrace();
System.out.println("循环抛出异常");
return -1;
}
}
//加上finally进行修改
public int test2(){
int divider =10;
int result =100;
try{
while (divider > -1){
divider--;
result = result +100/divider;
}
return result;
}catch (Exception e) {
e.printStackTrace();
System.out.println("循环抛出异常");
return result =999;
}finally {
System.out.println("这是finally");
System.out.println("我是result,我的值:" + result);
}
}
//如果try和catch、finally块中没有任何的return语句,则会调用三者之外的语句。
public int test3(){
int divider =10;
int result =100;
try{
while (divider > -1){
divider--;
result = result +100/divider;
}
}catch (Exception e) {
e.printStackTrace();
System.out.println("循环抛出异常");
}finally {
System.out.println("这是finally");
System.out.println("我是result,我的值:" + result);
}
System.out.println("我是test3,我运行完了");
return 1111;
}
}
2.异常抛出
throw--声明将要抛出何种类型的异常
public void 方法名(参数列表)throws 异常列表{
//调用会抛出异常的方法或者:throw new Exception();
}
3.自定义异常
class 自定义异常类 extrends 异常类型{
}