java异常处理

catch:后面对应异常类型和一个代码块,用于表明该catch块用于处理这种类型的代码块,可以有多个catch块

finally:主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件),异常机制总是保证finally块总是被执行。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者   throw等终止方法的语句,则就不会跳回执行,直接停止。

throws:用在方法签名中,用于声明该方法可能抛出的异常。

1.FileNotFoundException

//java7之前,在finally中关闭流,不能在try中关闭,因为一旦出现异常(找不到文件),不往下执行
	public void finallyCloseResouce() {
		FileInputStream InputStream = null;
		try {
			File file=new File( "./.txt"); 
			InputStream = new FileInputStream(file);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}finally {
			if(null!=InputStream) {
				try {
					InputStream.close();
				} catch (IOException e) {
				}
			}
		}
	}

jdk1.7后将FileInputStream InputStream = new FileInputStream(file)写在try()中,会  自动关闭流


    public void autoCloseResouce() {
		File file=new File( "./jdk1.7后提供的语法糖.txt"); 
		try(FileInputStream InputStream = new FileInputStream(file)) {
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
	}

2.NumberFormatException 数值转换异常

//数值转换异常:传入的不是字符串就会出现这个异常,比如传的是null或者“”
	public void dothis()throws NumberFormatException {
		Integer year=Integer.parseInt("~~~~455;lll"); //将字符串转化成Integer类型
		System.out.println(year);
	}

使用throws抛出异常

若代码出现异常,交由上级调用者来处理(web开发,一般都是在controller层中处理异常)

使用throws抛出异常的思路是:当前方法不知道如何处理这种类型的异常,该异常应该由上一级调用者处理,如果main方法也不知道应该如何处理这种类型的异常,也可以使用使用throws声明抛出异常,该异常将交给JVM来处理。

JVM对异常的处理方法:打印异常跟踪栈的信息,并终止程序运行,所以有很多程序遇到异常后自动结束。

3.自定义异常

public void wrapException() throws MyException{
		try {
		} catch (NumberFormatException e) {
            //自定义异常,最好将原本的异常栈信息也包括进去方便定位
			throw new MyException("描述错误的信息",e);
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值