java异常总结

总结:一图,5关键字,先逮小后逮大,异常和重写的关系,throw和throws的区别,自定义异常,常用的异常。

注意观察错误的名字和行号。

一图:

5关键字:try  catch   finally   throw throws   printStackTrace   getMessage。

先逮小后逮大:不可以调换顺序,就像已经用大网捞鱼后,再用小网捞不着。

异常和重写的关系:重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常。

throw和throws的区别:throws抛异常最简单的写法:throws Exception。最终处理需写try catch。

   参考:http://www.cnblogs.com/xiohao/p/3547443.html

自定义异常:1、继承Exception:必须逮异常。继承RunTimeException:不是必须逮。2、对 if 语句的影响:一旦抛出异常,后面的语句不会执行,方法结束。

          步骤:1、通过继承java.lang.Exception类声明自己的异常类。
                     2、在方法适当的位置生成自定义异常的实例,并用throw 语句抛出。
                     3、在方法的声明部分用throws语句声明该方法可能抛出的异常。

常用的异常:FileNotFoundException / IOException / Arithmetic / 

注意:处理不了,向外抛。
catch里面一定要做处理,否则异常就被吞了。


?可以将涉及方法全部打印。

经验:
1、处理运行时异常,,采用逻辑去合理规避同时辅助try-catch处理。
2、在多重catch后面,可以加一个catch(Exception)来处理可能会被遗漏的异常。
3、对不确定的代买,可以加上try-catch。
4、尽量处理异常,切记只调用printStackTrace()去打印输出。
5、具体如何处理异常,要根据不同业务需求和异常类型去决定。
6、尽量添加finally语句块去释放占用的资源。


代码示例:

import java.io.*;

public class Test3 {

	//年龄不能为负
	public void regist(int age) throws MyException {
		if(age < 0) {
			throw new MyException("年龄为负不合理. ",1);
		}
		System.out.println("年龄是:" + age);
	}
	
	//管理存入的年龄是否正确
	public void manage() {
		try {
			regist(-100);
		}
		catch (MyException m) {
			System.out.println("错误信息" + m.getId());
			m.printStackTrace();
		}
		System.out.println("over.");
	}

	public static void main(String[] args) 
	{
		//IOException. FileNotFoundException .Exception.
		//try {}catch(){}catch(){}finally
		//printStrackTrace.getMessage	
		FileInputStream in = null;
		try {
			in = new FileInputStream("myfile.txt");
			int b ;
			b = in.read();
			while(b != -1) {
				System.out.print((char)b);
				b = in.read();
			}
		}catch (FileNotFoundException f) {
			System.out.println(f.getMessage());
		}catch (IOException e) {
			System.out.println(e.getMessage());
		}finally {
			try {
				in.close();
			}
			catch (IOException e){//注意:这里不可以使用FileNotFoundException。
				//否则显示:未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出
				  e.printStackTrace();
			}
		}	
				
		System.out.println();
		//测试 MyException
		Test3 t3 = new Test3();
		t3.manage();
	}
}

//myException,Exception
//有错误信息,错误类型。
class MyException extends Exception {
	private int id;
	private String message;
	
	public MyException(String message,int id) {
		this.message = message;
		this.id = id;
	}

	public int getId() {
		return id;
	}

	public String getMessage() {
		return message;
	}
}

结果:

123456.5987
错误信息1
MyException: 年龄为负不合理.
        at Test3.regist(Test3.java:8)
        at Test3.manage(Test3.java:16)
        at Test3.main(Test3.java:56)
over.


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值