【Java异常复习】

try catch finally
异常的捕获和处理需要采用 try 和 catch 来处理,具体格式如下:

try { 
 
}catch(OneException e) { 
 
}catch(TwoException e) { 
 
}finally { 
 
} 

try 中包含了可能产生异常的代码
catch 可以有一个或多个,catch 中是需要捕获的异常
当 try 中的代码出现异常时,出现异常下面的代码不会执行,马上会跳转到相应的catch 语句块中,如果没有异常不会跳转到 catch 中
finally 表示,不管是出现异常,还是没有出现异常,finally 里的代码都执行,finally 和 catch可以分开使用,但 finally 必须和 try 一块使用

final和finally的区别

final 关键字
    final修饰的类无法继承
    final修饰的方法无法覆盖
    final修饰的变量不能重新赋值。
finally 关键字
    和try一起联合使用。
    finally语句块中的代码是必须执行的。

声明异常

在方法定义处采用 throws 声明异常,如果声明的异常为受控异常,那么调用方法必须处理此异常

import java.io.*; 
 
public class demo1 { 
 	public static void main(String[] args) 
 	//throws FileNotFoundException, IOException { //可以在此声明异常,这样就交给 java 虚拟机处理了,不建议这样使用 
 	throws Exception { //可以采用此种方式声明异常,因为 Exception 是两个异常的父类 
 /* 
 //分别处理各个异常 
 	try { 
 		readFile(); 
 	}catch(FileNotFoundException e) { 
 		e.printStackTrace(); 
 	}catch(IOException e) { 
 		e.printStackTrace(); 
 	} 
 */ 
 	//可以采用如下方式处理异常 
 	//因为 Exception 是 FileNotFoundException 和 IOException 的父类 
 	//但是一般不建议采用如下方案处理异常,粒度太粗了,异常信息 
 	//不明确 
 /* 

 	try { 
 		readFile(); 
 	}catch(Exception e) { 
 		e.printStackTrace(); 
 	} 
 */ 
 		readFile(); 
 } 
 	private static void readFile() throws FileNotFoundException,IOException { //声明异常,声明后调用者必须处理 

 		FileInputStream fis = null; 
 		try { 
 			fis = new FileInputStream("test.txt"); 
 		}finally { 
 		fis.close(); 
 	} 
 	} 
} 

如何手动抛出异常

public class Test08 {

    public static void main(String[] args) {
        int ret = method1(1000, 10);
        if (ret == -1) {
            System.out.println("除数为 0");
        }
        if (ret == -2) {
            System.out.println("被除数必须为 1~100 之间的数据");
        }
        if (ret == 1) {
            System.out.println("正确");
        }
        //此种方式的异常处理,完全依赖于程序的返回 
        //另外异常处理和程序逻辑混在一起,不好管理 
        //异常是非常,程序语句应该具有一套完成的异常处理体系 

    }

    private static int method1(int value1, int value2){
        if (value2 == 0) {
            return -1;
        }
        if (!(value1 >0 && value1<=100)) {
            return -2;
        }
        int value3 = value1/value2;
        System.out.println("value3=" + value3);
        return 1;
    }
}

throws 关键字和 throw 关键字在使用上的几点区别如下:

  • throw 关键字用在方法内部,只能用于抛出一种异常,用来抛出方法中的异常。
  • throws 关键字用在方法声明上,可以抛出多个异常,用来标识该方法可能抛出的异常列表。一个方法用 throws
    标识了可能抛出的异常列表,调用该方法的方法中必须包含可处理异常的代码,否则也要在方法签名中用 throws 关键字声明相应的异常。

常见异常

ClassCastException(类转换异常)

IndexOutOfBoundsException(数组越界)

NullPointerException(空指针)

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值