Java异常学习笔记(二)

Java异常学习笔记----异常处理机制

Java异常处理分为两大方法

a. try...catch...finally方式

b. throws方式

下面将详细阐述这两种方式以及它们的区别。


try... catch...finally方式

try...catch...finally的代码结构

try
{
       //可能出现异常的代码
}
catch(异常类名  异常名)
{
      //异常处理
}
finally
{
     //此处一般为了释放资源
}
try...catch...finally变种结构:

try...catch...可选finally

try{ //... }
catch{ //... }  
try...mutil-catch... 可选finally

try{ //... }
catch{ //... }
...
catch{ //... }
try...finally

不适合编译时异常

try{ //... }
finally{ //... }

下面是API中一个示例代码:

class MyClass {
     public static void main(String[] args) {
         crunch(null);//60行
     }
     static void crunch(int[] a) {
         mash(a);//64行
     }
     static void mash(int[] b) {
         System.out.println(b[0]);//67行
     }
 }
根据出错信息,我们可以确定发生的是NullPointerException,继承自RuntimeException,属于运行时异常。

编译并不报错,运行出错(也说明这是运行时异常)。之后我们

添加try...catch包围出错的位置:

public static void main(String[] args) {
		try{
		  crunch(null);
		}catch (NullPointerException e)
		{
			//这里进行处理
			System.out.println("数组访问异常");
		}

	}

注意:

1. try中的代码应该尽量少:因为try中的代码块消耗更多的虚拟机资源。

2. catch中不能空白:cath中必须有清晰的异常处理代码,不然会掩盖程序的异常,使程序难以调试。

3.try不一定能执行完:try中的代码执行时,一旦遇到异常,便放弃执行后续代码,立即跳转进入catch异常处理。所以try只能捕获一个异常,即使代码中可能有多个异常会产生。

4.catch是有序的:在有多个catch时,JVM会将程序中实际抛出的异常与catch中的异常按顺序逐个比较。所以必须是低等级异常在前,父级异常在后,平级异常没有先后。


另一种方式在后面继续。

            





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值