对Java中的异常的学习

异常

概念

在程序中的一些突发情况,导致程序崩溃

分类

img

Throwable
    Throwable是父类,ExceptionError都继承了该类
 所以在捕捉异常和错误的时候,也可以使用Throwable进行捕捉
    
    
错误	Error
	因为硬件问题导致的程序崩溃
	处理方案:软化开发工程师不需要处理
	
异常	Exception
	检查时异常		CheckedException
		因为程序中语法出现的问题
		处理方案:将语法修改正确
	运行时异常:		RuntimeException
		因为软化开发工程师在编写程序时,思路问题导致的程序崩溃
		处理方法:将思路捋顺并修改正确,思路正确但是因为所需的外部内容存在问题,需要容错
		

常见异常

IndexOutOfBoundsException:数组下标越界异常
NullPointerException:空指针异常
ClassCastException:类型转换异常
ArithmeticException:算法异常

异常的传递

	如果一个异常没有被捕获的话,它将会从调用栈顶被抛出。它会沿着调用栈往下传递给之前的方法。如果在这也没有被捕获的话,这个异常就会继续往下传递给这个方法之前的方法。这样向下传递直到这个异常被捕获或者到达调用栈的最低层。这就是异常的传递。
        
	举例:
	public class TestExceptionPropagation1{  
      void m(){  
        int data=50/0;  
      }  
      void n(){  
        m();  
      }  
      void p(){  
       try{  
        n();  
       }catch(Exception e){System.out.println("exception handled");}  
      }  
      public static void main(String args[]){  
       TestExceptionPropagation1 obj=new TestExceptionPropagation1();  
       obj.p();  
       System.out.println("normal flow...");  
      }  
    }

输出:
    exception handled
           normal flow..
    
    异常发生在 m() 方法中,但是 m()方法中未处理,因此它传递给之前的 n() 方法,也没有被处理。再一次传递给之前的 p() 方法,在 p()方法中被处理。    
        

异常处理

方案1:throws 声明异常
	语法:
		访问权限修饰符 修饰符 返回值类型 方法名() throws 异常{
		
		}
方案2:try catch 处理异常
	语法:
		try{
			有可能出现问题的代码
		}catch(出现的问题类型1 变量名){
			处理方案1
		}catch(出现的问题类型2 变量名){
			处理方案2
		}
		...
		catch(出现的问题类型n 变量名){
			处理方案n
		}finally{
			必须执行的代码
		}
	注意:
		1,try 中如果出现问题,那么出现问题的代码后的代码将不在被执行
		2,catch 中异常的类型必须先处理子类,在处理父类
		3,finally 中的代码是必须执行的

方案3:throw抛出异常
	语法:
		访问权限修饰符 修饰符 返回值类型 方法名() throws 异常{
			xxx
			throw new 异常类型();
			xxx
		}
	注意:
		throwthrows的区别:
			1,throw表示抛出异常,throws表示声明异常
			2,throw在方法中使用,throws表示定义方法的形参列表后,方法体前使用

自定义异常

1,创建一个类使其继承与异常类
2,重写构造函数,调用父类构造函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值